我有一个Couchbase文档“ Group”,其中包含group-members-names的列表。我想查询一个人的所有群组。我设法用N1QL ARRAY_CONTAINS来做到这一点-如代码示例所示-但我希望我可以像Spring Data一样从方法名生成查询。
我们将不胜感激:)
public List<MyGroup> findAllByMembers(String member);
和public List<MyGroup> findByMembers(String member);
,但是它们只是返回一个空列表-我猜他们试图匹配整个“成员”值,并且不将其识别为列表-没有错误。
我的带有列表字段的文档
@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);
}
给出成员中带有“ member1”的“ group1”。 repository.findAllByMembers(“ member1”);应该返回[“ group1”]。
答案 0 :(得分:1)
Couchbase受Spring Data规范的限制。不幸的是,我们不能简单地向它添加新的行为(如果您切换到关系数据库,则它必须无断点地工作)。因此,每当需要查询具有N1QL特定功能/关键字的内容时,都必须通过@Query
编写查询