Spring Data Repositories - 查找列表中的where字段

时间:2016-01-17 11:18:52

标签: java spring spring-data spring-data-mongodb spring-data-commons

我尝试将PagingAndSortingRepository find MyEntity where field in fieldValues@Repository public interface MyEntity extends PagingAndSortingRepository<MyEntity, String> { List<MyEntity> findByMyField(Set<String> myField); } 查询一起使用,如下所示:

{{1}}

但没有成功。

我希望上面的函数返回其字段与其中一个字段值匹配的所有实体,但它只返回空结果

即使它看起来像一个非常直接的能力,我也找不到docs中对它的任何引用。

是/如何实现?

感谢。

2 个答案:

答案 0 :(得分:11)

如果您正在搜索实体中的特定字段并且想要返回所有字段的列表,并且某个集合中至少有一个条目匹配,那么这确实是可能的。文档here表示可以使用关键字In示例:findByAgeIn(Collection<Age> ages)来实现这一点,相当于… where x.age in ?1

从您的帖子中我不能100%确定这是否是您所使用的用例,但请尝试一下。您需要搜索特定字段,因此请更换&#39;字段&#39;无论你在寻找什么领域。如果您在多个字段上搜索,可以将结果与Or关键字连接起来,并指定多个字段。

@Repository
public interface MyEntity extends PagingAndSortingRepository<MyEntity, String> {

    List<MyEntity> findByFieldIn(Set<String> myField);

} 

答案 1 :(得分:3)

http://docs.spring.io/spring-data/jpa/docs/current/reference/html/

您的方法名称必须为import sys sys.path.insert(0, '/home/httpd/localhost/mysite') ,因此您必须在末尾添加findByMyFieldIn以获得In查询。