12

我不得不公开在实体中用@Id 注释的主键。ID 字段仅在资源路径上可见,但在 JSON 正文上不可见。

4

2 回答 2

14

您可以使用RepositoryRestConfigurerAdapter实体级别进行配置。

@Configuration
public class ExposeEntityIdRestConfiguration extends RepositoryRestConfigurerAdapter {

    @Override
    public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
        config.exposeIdsFor(MyEntity.class);
    }
}

请注意,使用它您正在违反 spring-data-rest 的原则 - sdr 通过使用链接在资源之间导航来促进超媒体能够使用 API - 这里您的资源由链接标识和引用,因此 ID 不是不再需要了。在您的客户端上使用 id 会将构建资源链接的复杂性推给客户端。客户不应该被这些知识所困扰。

于 2016-01-24T19:12:05.103 回答
1

最好的解决方案是不使用实体的 ID,而是使用超媒体提供的链接引用。您只需要根据Spring Data Rest 使用的HAL规范解析您的 JSON。

于 2017-08-25T23:47:28.267 回答