Pat*_*ard 19 java spring json spring-data-rest spring-boot
这个问题与这个问题有关(Spring boot @ResponseBody没有序列化实体id).我观察到,在将应用程序迁移到Spring Boot并使用spring-boot-starter-data-rest依赖项后,我的实体@Id字段不再在生成的JSON中进行编组.
这是我的请求映射,在调试时,我可以看到数据在返回之前没有被更改,因此@Id属性稍后被剥离.
@RequestMapping(method = RequestMethod.GET, produces = {"application/json"})
public PagedResources<Receipt> receipts(Pageable pageable, PagedResourcesAssembler assembler) {
Page<Receipt> receipts = receiptRepository.findByStorerAndCreatedDateGreaterThanEqual("003845", createdStartDate, pageable);
PagedResources<Receipt> pagedResources = assembler.toResource(receipts, receiptResourceAssembler);
return pagedResources;
}
Run Code Online (Sandbox Code Playgroud)
是否有一个设置允许我在生成的JSON中保留@Id字段,因为我的应用程序允许用户按该值进行搜索.
谢谢 :)
Sta*_*007 24
默认情况下,Spring Data Rest不会吐出ID.但是,您可以通过exposeIdsFor(..)方法选择性地启用它.您可以在配置中执行此操作,类似这样
@Configuration
public static class RepositoryConfig extends
RepositoryRestMvcConfiguration {
@Override
protected void configureRepositoryRestConfiguration(
RepositoryRestConfiguration config) {
config.exposeIdsFor(Class1.class, Class2.class);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 20
从Spring Data Rest 2.4(如果使用spring-boot 1.3.0.M5这是一个传递依赖)开始,您可以使用RepositoryRestConfigurerAdapter.例如,
@Configuration
class SpringDataRestConfig {
@Bean
public RepositoryRestConfigurer repositoryRestConfigurer() {
return new RepositoryRestConfigurerAdapter() {
@Override
public void configureRepositoryRestConfiguration(
RepositoryRestConfiguration config) {
config.exposeIdsFor(Class1.class, Class2.class);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在揭露之前Id请阅读讨论:https://github.com/spring-projects/spring-hateoas/issues/66
在REST中,资源的id是它的URI.客户端没有明确使用id来构建url.例如,您可以替换uuid的id.甚至改变网址方案.
| 归档时间: |
|
| 查看次数: |
8017 次 |
| 最近记录: |