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 个解决方案:
- 预测。
用其他名字添加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);
}
};
}
我有一个基地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 个解决方案:
- 预测。
用其他名字添加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);
}
};
}