这个问题与此SO问题有关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; }
是否有一个设置可以让我将@Id字段保留在结果JSON中,因为我的应用允许用户按该值进行搜索。
谢谢 :)
默认情况下,Spring DataRest不吐出ID。但是,您可以通过ExposureIdsFor(..)方法_选择性地_ 启用它。您可以在配置中执行以下操作
@Configuration public static class RepositoryConfig extends RepositoryRestMvcConfiguration { @Override protected void configureRepositoryRestConfiguration( RepositoryRestConfiguration config) { config.exposeIdsFor(Class1.class, Class2.class); } }