我需要从没有特定架构的旧版Couchbase存储桶中检索数据。它可以从Couchbase Java客户端映射为com.couchbase.client.java.document.StringDocument
。我可以使用Java客户端直接执行此操作:
bucket.get(key, StringDocument.class)
但是如何使用StringDocument
来映射org.springframework.data.repository.CrudRepository
?
我无法创建此类接口interface UserRepository extends CrudRepository<StringDocument, String>
,因为Spring Data Couchbase需要@Document和@Id注释。
所有实体都应使用@Document注释进行注释。此外,实体中的每个字段都应使用@Field注释进行注释。虽然这是严格来说 - 可选的,但它有助于减少边缘情况并清楚地显示实体的意图和设计。
还有一个特殊的@Id注释需要始终存在。最佳做法是命名属性id。
我应该直接使用Bucket,创建我自己的类似实体,还是有其他解决方案?
我使用以下版本的spring-boot-starter-data-couchbase:1.5.9.RELEASE
。
答案 0 :(得分:1)
如果它只是一个StringDocument
(它甚至没有被spring-data-couchbase
保存,那么......为了反序列化目的而注入了_class
属性)那么我&#39 ; d只需使用桶来检索它。
请记住,如果您的存储库(我正在谈论您已定义的任何其他存储库映射到StringDocument所在的同一存储区)被定义为CouchbaseRepository
,您将能够访问从诸如repository.getCouchbaseOperations().getCouchbaseBucket()
之类的存储库方法中获取存储桶本身。或者您可以尝试以下repository.getCouchbaseOperations().findById("id", StringDocument.class)
。