[SPRING] 앱을 Spring Boot로 마이그레이션 한 후 Spring Data Rest를 사용하는 동안 @Id를 사용하는 엔티티 속성이 더 이상 JSON에 마샬링되지 않는다는 것을 관찰했다.
SPRING앱을 Spring Boot로 마이그레이션 한 후 Spring Data Rest를 사용하는 동안 @Id를 사용하는 엔티티 속성이 더 이상 JSON에 마샬링되지 않는다는 것을 관찰했다.
이 질문은이 SO 질문과 관련이 있습니다 (스프링 부트 @ResponseBody는 엔티티 ID를 직렬화하지 않습니다). 나는 Spring Boot로 app을 마이그레이션하고 spring-boot-startter-data-rest 의존성을 사용한 후에, 내 entity @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;
}
내 애플 리케이션은 사용자가 그 값으로 검색 할 수 있기 때문에 결과 JSON에 @Id 필드를 유지할 수있는 설정이 있는가?
감사 :)
해결법
-
==============================
1.기본적으로 Spring Data Rest는 ID를 유출하지 않습니다. 그러나 exposeIdsFor (..) 메소드를 통해 선택적으로 활성화 할 수 있습니다. 구성에서이 작업을 수행 할 수 있습니다.
기본적으로 Spring Data Rest는 ID를 유출하지 않습니다. 그러나 exposeIdsFor (..) 메소드를 통해 선택적으로 활성화 할 수 있습니다. 구성에서이 작업을 수행 할 수 있습니다.
@Configuration public static class RepositoryConfig extends RepositoryRestMvcConfiguration { @Override protected void configureRepositoryRestConfiguration( RepositoryRestConfiguration config) { config.exposeIdsFor(Class1.class, Class2.class); } }
-
==============================
2.Spring Data Rest 2.4 (Spring-boot 1.3.0.M5를 사용하는 경우 전이 종속성)에서 RepositoryRestConfigurerAdapter를 사용할 수 있습니다. 예를 들어,
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); } } } }
-
==============================
3.ID를 노출하기 전에 다음 주소를 읽으십시오. https://github.com/spring-projects/spring-hateoas/issues/66
ID를 노출하기 전에 다음 주소를 읽으십시오. https://github.com/spring-projects/spring-hateoas/issues/66
-
==============================
4.모델 클래스의 @ 주석은 마술을합니다.
모델 클래스의 @ 주석은 마술을합니다.
public class Location { @Id private String woeid; private String locationName;
그러면 mongo 객체는 다음과 같이 보일 것입니다 :
{ "_id" : "2487889", "_class" : "com.agilisys.weatherdashboard.Location", "locationName" : "San Diego, CA" }
-
==============================
5.놓다 @getter, @setters 그리고 json 결과에 노출 될 것이므로 도움이 되길 바랍니다.
놓다 @getter, @setters 그리고 json 결과에 노출 될 것이므로 도움이 되길 바랍니다.
from https://stackoverflow.com/questions/24936636/while-using-spring-data-rest-after-migrating-an-app-to-spring-boot-i-have-obser by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 MVC 415 지원되지 않는 미디어 유형 (0) | 2018.12.10 |
---|---|
[SPRING] 정보 : 없음 스프링 WebApplicationInitializer 형식을 클래스 경로에서 검색되었습니다. (0) | 2018.12.10 |
[SPRING] Spring 배치에서 여러 데이터 소스 사용 (0) | 2018.12.10 |
[SPRING] 다중 데이터 소스와 다중 세션 팩토리를 구성하는 최대 절전 모드 (0) | 2018.12.10 |
[SPRING] Java / Hibernate - 쓰기 작업은 읽기 전용 모드에서 허용되지 않습니다. (0) | 2018.12.10 |