如何在查询参数是列表的地方编写JPARepository查询?

时间:2016-03-18 02:52:46

标签: java spring jpa spring-data

Spring Data' JPARepository的文档提供了诸如

之类的示例
List<User> findByLastname(String lastname);

for和SpringData将完成生成正确查询的所有工作,并返回正确的用户。

但是假设我想要获得50个用户,并且我有一个他们姓氏的列表。我不想打电话给上述方法50次。我想把JPA等同于

select *
from user
where last_name in ('N0', 'N1', 'N2'... 'N49');

现在看documentation我看到了一些可能性,例如命名查询和规范。命名查询似乎需要在Java注释中指定SQL。与findAll方法一起使用的规范在示例中具有ishasMoreThan类型方法,但我不会看到任何会转变为in查询的方法。而规范的Javadocs没有任何示例用法。

如何 如何在JPARepository中创建一个方法来查询可能性列表?

2 个答案:

答案 0 :(得分:4)

您使用

List<User> findByLastnameIn(Collection<String> lastnames);

更多here。 (表4,第5行到最后一行)

答案 1 :(得分:0)

创建要作为查询参数创建的姓氏数组。然后试试这个:findAllInLastName(List lastNames);只要您遵循创建查询方法名称的正确格式,Spring数据就会在您扩展JpaRepository类时自动搜索合适的查询方法。希望这对你有所帮助。并尝试阅读Spring Data在线文档。干杯兄弟!