我有下一个实体:
public class Person {
private String name;
private int age;
private Address address;
}
我正在使用Spring JPA存储库来查询数据库。因此,我有一个List<Person>
从数据库中检索。我的下一个查询正在工作:
List<Person> findByNameAndAge(String name, int age);
我想做的是传递整个List<Person>
而不是多次调用前一个方法,而只需一次调用即可查询数据库。像这样:
@Query("SELECT p FROM Person p WHERE (p.name, p.int) IN (:list.name, :list.int)")
List<Person> findByNameAndAge(@Param("list") List<Person> personList);
答案 0 :(得分:0)
根据评论中的讨论,我了解您希望生成的查询是这样的:
SELECT p FROM Person p
WHERE (p.name, p.int) IN ((:p.name1, :p.age1), (:p.name2, :p.age2), ...)
我认为有一种很简单的方法:
@Query("SELECT p FROM Person p WHERE (p.name, p.age) IN (:params)")
List<Person> findByNameAndAge(@Param("params") List<Object[]> params);
其中params
是tuples
的列表:
param[0] = name1, param[1] = age1,
param[0] = name2, param[1] = age2,
..
请尝试一下,让我知道这是否适合您。