【发布时间】:2016-04-30 14:45:03
【问题描述】:
我必须在实体中公开带有@Id 注释的主键。ID 字段仅在资源路径上可见,而在 JSON 正文上不可见。
【问题讨论】:
标签: spring spring-data-rest spring-hateoas hypermedia
我必须在实体中公开带有@Id 注释的主键。ID 字段仅在资源路径上可见,而在 JSON 正文上不可见。
【问题讨论】:
标签: spring spring-data-rest spring-hateoas hypermedia
您可以在实体级别使用RepositoryRestConfigurerAdapter 进行配置。
@Configuration
public class ExposeEntityIdRestConfiguration extends RepositoryRestConfigurerAdapter {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
config.exposeIdsFor(MyEntity.class);
}
}
请注意,使用这个您违反了 spring-data-rest 的原则 - sdr 通过使用链接在资源之间导航来促进超媒体能够使用 API - 这里您的资源由链接标识和引用,因此不再需要 id。在您的客户端上使用 id 会将构建资源链接的复杂性推给客户端。并且客户不应该被这些知识所困扰。
【讨论】:
RepositoryRestConfigurerAdapter 现在已弃用(自 3.1 起)。通过覆盖相同的方法来实现RepositoryRestConfigurer。
最好的解决方案是不使用实体的 ID,而是使用超媒体提供的链接引用。 您只需要根据 Spring Data Rest 使用的 HAL 规范解析您的 JSON。
【讨论】: