Spring JPA存储库访问对象集合中的字段

时间:2019-04-27 16:26:37

标签: java spring-data-jpa

我有下一个实体:

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);

1 个答案:

答案 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);

其中paramstuples的列表:

param[0] = name1, param[1] = age1,
param[0] = name2, param[1] = age2,
..

请尝试一下,让我知道这是否适合您。