Spring Data REST 默认隐藏 JSON 中的技术实体字段(@Version、@Id)。如何 return 它们像往常一样属性?

Spring Data REST hides technical entity fields (@Version, @Id) from JSON by default. How to return them as usual properties?

我有一个基地class

@MappedSuperclass
@Data //lombok annotation for getters/setter
public class BaseEntity implements Identifiable<Long> {
    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Version
    private Long version;
}

对于没有 "id" 和 "version" 属性的任何派生 class Spring 数据 REST returns JSON。

我找到了 2 个解决方案:

  1. 预测。
  2. 用其他名字添加getters/setters:

    public Long getRevision() {
        return version;
    }
    
    public void setRevision(Long revision) {
        this.version = revision;
    }
    
    public Long getIdentifier() {
        return id;
    }
    
    public void setIdentifier(Long identifier) {
        this.id = identifier;
    }
    

这两种解决方案看起来都像是 hack。是否存在更好的方法?

显示正在配置的实体 ID RepositoryRestConfigurerAdapter:

@Bean
public RepositoryRestConfigurerAdapter repositoryRestConfigurerAdapter() {
    return new RepositoryRestConfigurerAdapter() {
        /**
         * Exposing ID for some entities
         */
        @Override
        public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
            config.exposeIdsFor(MyEntity.class);            
            super.configureRepositoryRestConfiguration(config);
        }

    };
}