我可以从Spring Data Couchbase存储库中的查询方法名称派生ARRAY_CONTAINS吗?

问题描述 投票:1回答:1

我有一个Couchbase-Document“Group”,其中包含一个group-members-names列表。我想查询一个人的所有组。我设法用N1QL ARRAY_CONTAINS做 - 在代码示例中看到 - 但我希望我可以从方法名称生成查询,就像在Spring Data中一样。

任何帮助表示赞赏:)

I tried

public List<MyGroup> findAllByMembers(String member);public List<MyGroup> findByMembers(String member);但他们只返回一个空列表 - 我猜他们试图匹配整个“成员”值并且不认为它是一个列表 - 没有错误。

Code

带有List字段的My Document

@Data
@Document
public class MyGroup {
    private String name;
    private List<String> members = new ArrayList<>();
}

我的存储库

@RepositoryDefinition(domainClass = MyGroup.class, idClass = String.class)
public interface MyGroupRepository extends CouchbaseRepository<MyGroup, String> {

    //@Query("#{#n1ql.selectEntity} WHERE ARRAY_CONTAINS(members,$1) AND #{#n1ql.filter}")
    public List<MyGroup> findAllByMembers(String member);
}

Expected

在成员中给出带有“member1”的“group1”。 repository.findAllByMembers( “的member1”);应该返回[“group1”]。

java n1ql spring-data-couchbase
1个回答
1
投票

Couchbase受Spring Data规范的限制。不幸的是,我们不能简单地向它添加新的行为(如果切换到关系数据库,它必须没有断点)。因此,每当您需要查询具有N1QL特定函数/关键字的内容时,您必须通过@Query编写查询

© www.soinside.com 2019 - 2024. All rights reserved.