Questa domanda è correlata a questa domanda SO (Spring boot @ResponseBody doesn't serialize entity id). Ho osservato che dopo la migrazione di un'app in Spring Boot e l'utilizzo della dipendenza spring-boot-starter-data-rest, i miei campi IDI non vengono più sottoposti a marshalling nel JSON risultante.Durante l'utilizzo di Spring Data Rest dopo aver migrato un'app in Spring Boot, ho osservato che le proprietà dell'entità con @Id non vengono più eseguite su JSON
Questa è la mia richiesta di mappatura e durante il debug, posso vedere i dati non vengono modificati prima di restituirlo, quindi le proprietà @Id vengono rimosse in seguito.
@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;
}
C'è un ambiente che mi permettesse di mantenere il campo @Id in JSON risultante perché la mia applicazione permette all'utente di cercare da quel valore.
Grazie :)
Dovrebbe essere ha osservato che se si utilizza spring-boot, è necessario estendere 'SpringBootRepositoryRestMvcConfiguration' invece di' RepositoryRestMvcConfiguration' e renderlo una classe normale non una classe statica. – jax
Dalla versione 2.4, il metodo 'configureRepositoryRestConfiguration' deve essere sostituito estendendo la classe' RepositoryRestConfigurerAdapter'. –
E non dimenticare di supportare ora getter e setter per il campo id nella classe entità! .. (l'ho dimenticato e cercavo molto tempo per quello) – flipperweid