我需要从没有特定架构的旧版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
。
最佳答案
如果它只是一个StringDocument
(开始时甚至没有被spring-data-couchbase
保存,..出于反序列化目的注入了_class
属性),那么我将使用存储桶来检索它。
请记住,如果您的存储库(我正在谈论的是您定义的其他任何存储库,都映射到StringDocument所在的相同存储桶)定义为CouchbaseRepository
,您将能够从存储库方法中访问存储桶本身,例如所以repository.getCouchbaseOperations().getCouchbaseBucket()
。或者,您可以尝试以下repository.getCouchbaseOperations().findById("id", StringDocument.class)
。
关于java - 是否可以将Spring Data Couchbase与外部文档映射(来自依赖项)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47882866/