[SPRING] 스프링 데이터 REST에서 @EmbeddedId 변환기를 노출하는 방법
SPRING스프링 데이터 REST에서 @EmbeddedId 변환기를 노출하는 방법
복합 기본 키가있는 일부 엔터티가 있으며 이러한 엔터티에 _links 안에 URL의 클래스의 정규화 된 이름을 가진 잘못된 링크가있는 경우
또한 링크를 클릭하면 오류가 발생합니다.
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type java.lang.String to type com.core.connection.domains.UserFriendshipId
나는 Jpa : repository가 활성화 된 XML 리포지토리와 JpaRepository에서 확장 된 Respository를 구성했습니다.
Repository가이를 처리하기 위해 org.springframework.core.convert.converter.Converter를 구현하도록 할 수 있습니까? 현재 아래와 같은 링크를 얻고 있습니다 -
_links: {
userByFriendshipId: {
href: "http://localhost:8080/api/userFriendships/com.core.connection.domains.UserFriendshipId@5b10/userByFriendId"
}
xml 구성에서 jpa : repositories가 활성화되고 @RestResource가 리포지토리 내부에서 활성화되었습니다.
해결법
-
==============================
1.처음에는 유용한 링크를 얻어야합니다. 현재 복합 ID는 com.core.connection.domains.UserFriendshipId@5b10으로 표시됩니다. UserFriendshipId의 toString 메소드를 오버라이드하여 2-3과 같은 유용한 것을 만들어 내면 충분합니다.
처음에는 유용한 링크를 얻어야합니다. 현재 복합 ID는 com.core.connection.domains.UserFriendshipId@5b10으로 표시됩니다. UserFriendshipId의 toString 메소드를 오버라이드하여 2-3과 같은 유용한 것을 만들어 내면 충분합니다.
다음으로 2-3을 UserFriendshipId로 다시 변환 할 수 있도록 변환기를 구현해야합니다.
class UserFriendShipIdConverter implements Converter<String, UserFriendshipId> { UserFriendShipId convert(String id) { ... } }
마지막으로 변환기를 등록해야합니다. 이미 configureConversionService를 재정의 할 것을 제안하셨습니다.
protected void configureConversionService(ConfigurableConversionService conversionService) { conversionService.addConverter(new UserFriendShipIdConverter()); }
XML 구성을 선호하는 경우 설명서의 지침을 따를 수 있습니다.
-
==============================
2.받아 들여진 대답을 확장하려면 .. spring-boot를 사용할 때 이것을 작동 시키려면 RepositoryRestMvcConfiguration을 확장하는 클래스가 @Configuration 어노테이션을 가져야합니다. 또한 스프링 부트 애플리케이션 클래스에 다음 주석을 추가해야했습니다.
받아 들여진 대답을 확장하려면 .. spring-boot를 사용할 때 이것을 작동 시키려면 RepositoryRestMvcConfiguration을 확장하는 클래스가 @Configuration 어노테이션을 가져야합니다. 또한 스프링 부트 애플리케이션 클래스에 다음 주석을 추가해야했습니다.
@SpringBootApplication @Import(MyConfiguration.class) public class ApplicationContext { public static void main(String[] args) { SpringApplication.run(ApplicationContext.class,args); } }
configure 메소드를 오버라이드하는 메소드 내에서 super 메소드를 호출했다.
@Override protected void configureConversionService(ConfigurableConversionService conversionService) { super.configureConversionService(conversionService); conversionService.addConverter(new TaskPlatformIdConverter()); }
이렇게하면 기본 변환기가 보존 된 다음 사용자가 추가됩니다.
from https://stackoverflow.com/questions/26249506/how-to-expose-embeddedid-converters-in-spring-data-rest by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링이있는 JSR-303 제약 검사기의 종속성 삽입 실패 (0) | 2019.01.16 |
---|---|
[SPRING] 지도 <String, String>을 스프링 MVC 컨트롤러에 전달 (0) | 2019.01.16 |
[SPRING] Spring WebSocket : 잘못된 업그레이드 헤더로 인해 핸드 셰이크가 실패했습니다 : null (0) | 2019.01.16 |
[SPRING] Spring에서 ApplicationContext를 정확히 닫는 방법은 무엇입니까? (0) | 2019.01.16 |
[SPRING] Hibernate (JDBC 아님)를 통해 blob에서 이미지 검색 (0) | 2019.01.16 |