Spring JPA Repository получает доступ к полям из коллекции объектов - PullRequest
1 голос
/ 27 апреля 2019

У меня есть следующая сущность:

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 голосов
/ 27 апреля 2019

Исходя из обсуждений в комментариях, я понимаю, что вы ожидаете, что сгенерированный запрос будет выглядеть примерно так:

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,
..

Пожалуйста, попробуйте и дайте мне знать, если это работает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...