我需要从没有特定架构的旧版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/

10-09 01:43