2017-12-19 17 views
0

특정 스키마가없는 레거시 Couchbase 버킷에서 데이터를 검색해야합니다. Couchbase Java 클라이언트에서 com.couchbase.client.java.document.StringDocument으로 매핑 될 수 있습니다. 나는이 직접 사용하는 Java 클라이언트 수행 할 수스프링 데이터 Couchbase를 외부 문서 (의존성에서)와 매핑 할 수 있습니까?

bucket.get(key, StringDocument.class)

을하지만 어떻게 org.springframework.data.repository.CrudRepository를 사용하여이 StringDocument를 매핑 할 수 있습니다?

스프링 데이터 Couchbase에 @Document와 @Id 주석이 필요하기 때문에 interface UserRepository extends CrudRepository<StringDocument, String> 인터페이스를 만들 수 없습니다.

모든 엔티티는 @Document 주석으로 주석되어야합니다. 또한 엔티티의 모든 필드는 @Field 주석으로 주석되어야합니다. 이것은 엄격하게 말하자면 선택 사항이지만 가장자리의 경우를 줄이는 데 도움이되며 엔티티의 의도와 디자인을 명확하게 보여줍니다.

항상 필요한 @Id 주석이 있습니다. 가장 좋은 방법은 속성 ID의 이름을 지정하는 것입니다.

직접 버킷을 사용해야하나요, 제 자신의 유사한 엔티티를 만들거나 다른 해결책이 있습니까?

다음과 같은 버전의 spring-boot-startter-data-couchbase를 사용합니다 : 1.5.9.RELEASE.

답변

1

하면 그 단지 StringDocument (그리고 심지어 .. 직렬화 복원을 목적으로 _class 속성을 주입 시작하는 spring-data-couchbase가 저장되지 않았습니다) 나는 단지 그것을 검색 할 버킷을 사용하십시오.

리포지토리 (내가 정의한 다른 리포지토리가 StringDocument가있는 동일한 버킷에 매핑 됨)가 CouchbaseRepository으로 정의 된 경우 리포지토리에서 버킷 자체에 액세스 할 수 있습니다 방법은 repository.getCouchbaseOperations().getCouchbaseBucket()입니다. 또는 다음을 시도해보십시오 repository.getCouchbaseOperations().findById("id", StringDocument.class).

+0

감사합니다. 더 좋은 대답이 없을 경우 나는 당신의 것을 받아 들일 것입니다 :) – solomkinmv