Spring Data REST默认从JSON隐藏技术实体字段(@Version,@ Id)。如何将它们作为常规属性返回?

时间:2017-12-08 15:53:56

标签: java json spring spring-data-rest

我有一个基类

@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;
}

对于任何派生类,Spring Data REST返回没有“id”和“version”属性的JSON。

我找到了2个解决方案:

  1. 预测。
  2. 使用其他名称添加getter / setter:

    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;
    }
    
  3. 两种解决方案看起来都像黑客一样。是否存在更好的方法?

1 个答案:

答案 0 :(得分:2)

RepositoryRestConfigurerAdapter

中显示正在配置的实体的ID
@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);
        }

    };
}