Java 检索couchbase文档| spring中存储的json对象数组

Java 检索couchbase文档| spring中存储的json对象数组,java,spring-data,couchbase,spring-data-couchbase,Java,Spring Data,Couchbase,Spring Data Couchbase,如何检索存储在couchbase文档中的JSON对象数组,并使用spring数据将其存储在相应的列表中,比如list 以下是couchbase上名为“项目摘要”的文档内容- [ { "id": "1", "title": "New API", "owner_id": "dsdssdsd445d", "description": "Yh A Testin API", "status": "unactiveAPI

如何检索存储在couchbase文档中的JSON对象数组,并使用
spring数据将其存储在相应的列表中,比如
list

以下是couchbase上名为“项目摘要”的文档内容-

[
    {
        "id": "1",
        "title": "New API",
        "owner_id": "dsdssdsd445d",
        "description": "Yh A Testin API",
        "status": "unactiveAPI"
    },
    {
        "id": "2",
        "title": "New TW Projec API",
        "owner_id": "dsdssdsd445d",
        "description": "Testin API",
        "status": "unactiveAPI"
    },
    {
        "id": "3",
        "title": "Projec API",
        "owner_id": "dsdssdsd445d",
        "description": "Testin",
        "status": "unactiveAPI"
    }
]
当我尝试使用以下方法检索它时-

public interface ProjectSummaryRepository extends CrudRepository<List<ProjectSummary>, String>{}

//within main method
Optional<List<ProjectSummary>> summaries = projectSummaryRepo.findById(COUCHBASE_DOCUMENT_ID);

在此场景中不能使用findById。您必须使用SpringData DSL查询您的数据:

public interface ProjectSummaryRepository extends CrudRepository<List<ProjectSummary>, String> {

   //using standard Spring Data DSL
   List<ProjectSummary> findByTitleAndStatus(String title, String status)

   //complex query using N1QL syntax
   @Query("#{#n1ql.selectEntity} where #{#n1ql.filter} and status = $1 and ( title  = $2 or owner_id = $3)")
   List<ProjectSummary> findWithSomeComplexQuery(String status, String title, String owner_id)
 }
public interface ProjectSummaryRepository扩展了crudepository{
//使用标准Spring数据DSL
列出FindBytileAndStatus(字符串标题、字符串状态)
//使用N1QL语法的复杂查询
@查询(“#{n1ql.selectEntity}其中#{#n1ql.filter}和状态=$1和(标题=$2或所有者id=$3)”)
列表findWithSomeComplexQuery(字符串状态、字符串标题、字符串所有者\u id)
}
之后,您可以在代码中简单地调用这些方法

  List<ProjectSummary> sumaries = projectSummaryRepo.findByTitleAndStatus("someTitle", "someStatus")

  List<ProjectSummary> sumaries2 = projectSummaryRepo.findWithSomeComplexQuery("someStatus", "someTitle", "owner123" )
List sumaries=projectSummaryRepo.findbytileandstatus(“someTitle”、“someStatus”)
List sumaries2=projectSummaryRepo.findWithSomeComplexQuery(“someStatus”、“someTitle”、“owner123”)

使用findById无法在此场景中使用。您必须使用SpringData DSL查询您的数据:

public interface ProjectSummaryRepository extends CrudRepository<List<ProjectSummary>, String> {

   //using standard Spring Data DSL
   List<ProjectSummary> findByTitleAndStatus(String title, String status)

   //complex query using N1QL syntax
   @Query("#{#n1ql.selectEntity} where #{#n1ql.filter} and status = $1 and ( title  = $2 or owner_id = $3)")
   List<ProjectSummary> findWithSomeComplexQuery(String status, String title, String owner_id)
 }
public interface ProjectSummaryRepository扩展了crudepository{
//使用标准Spring数据DSL
列出FindBytileAndStatus(字符串标题、字符串状态)
//使用N1QL语法的复杂查询
@查询(“#{n1ql.selectEntity}其中#{#n1ql.filter}和状态=$1和(标题=$2或所有者id=$3)”)
列表findWithSomeComplexQuery(字符串状态、字符串标题、字符串所有者\u id)
}
之后,您可以在代码中简单地调用这些方法

  List<ProjectSummary> sumaries = projectSummaryRepo.findByTitleAndStatus("someTitle", "someStatus")

  List<ProjectSummary> sumaries2 = projectSummaryRepo.findWithSomeComplexQuery("someStatus", "someTitle", "owner123" )
List sumaries=projectSummaryRepo.findbytileandstatus(“someTitle”、“someStatus”)
List sumaries2=projectSummaryRepo.findWithSomeComplexQuery(“someStatus”、“someTitle”、“owner123”)

我尝试使用标准spring dsl(List findById(String id)),但它给了我一条错误消息——“keyspace项目摘要bucket上没有与您的查询匹配的可用索引。请使用创建索引或创建主索引来创建索引,或检查您的预期索引是否联机。”您必须首先为bucket创建至少一个主索引。在couchbase服务器上运行“在您的_BUCKET_NAME上创建主索引”,我尝试使用标准spring dsl(List findById(String id)),但它给了我以下错误消息-“keyspace项目摘要存储桶上没有与您的查询匹配的索引。使用“创建索引”或“创建主索引”创建索引,或检查您的预期索引是否联机。“您必须首先为您的存储桶创建至少一个主索引。在couchbase服务器上运行“在您的存储桶名称上创建主索引”