Spring 数据存储库 - 查找列表中的字段

Spring Data Repositories - Find where field in list

我正在尝试将 spring PagingAndSortingRepositoryfind MyEntity where field in fieldValues 查询一起使用,如下所示:

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

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

}

但是没有成功。

我希望上述函数 return 所有字段与字段值之一匹配的实体,但它只有 return 空结果 .

尽管它看起来是一个非常直接的能力,但我在 docs.

中找不到任何关于它的参考资料

是/如何实现?

谢谢。

如果您在实体中的特定字段上进行搜索并且希望return所有该字段的列表与某个集合中的至少一个条目相匹配,这确实是可能的。文档 here 说这可以使用关键字 In 示例来实现:findByAgeIn(Collection<Age> ages) 等同于 … where x.age in ?1

根据您的 post,我不能 100% 确定这是否是您所追求的用例,但请尝试一下。您将需要搜索特定字段,因此请将 'field' 替换为您要搜索的任何字段。如果您在多个字段上进行搜索,则可以使用 Or 关键字连接结果并以这种方式指定多个字段。

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

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

} 

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

你的方法名称必须是 findByMyFieldIn 所以你必须在末尾添加一个 In 以获得 where ... in (..) 查询。