Как запросить коллекцию, которая может быть нулевой в JPQL? - PullRequest
0 голосов
/ 28 февраля 2020

Скажем, у меня есть такая сущность

class Parent {
    @OneToMany(mappedBy = "par")
    Set<Child> children

    String stuff;
}

class Child {
    @ManyToOne
    @JoinColumn(name="par_id", nullable=false)
    private Parent par;

    String value;
}

Я хочу получить такой запрос:

Select DISTINCT par from Parent par LEFT JOIN par.children chi 
WHERE
( par.stuff = :stuff or (:stuff is null))
AND ((chi is not empty) and chi.value = :value))

Но это возвращает мне родителей с пустыми детьми.

Мне нужно выбрать всех родителей, у которых есть набор непустых дочерних элементов, а также дочерних элементов, соответствующих значению = x

1 Ответ

0 голосов
/ 28 февраля 2020

Вы можете попробовать использовать inner join, чтобы убедиться, что дети существуют:

select distinct par from Parent par join par.children chi where chi.value = :value

Вы можете использовать оператор exists:

select distinct par from Parent par 
where exists 
 (select chi 
  from Child chi 
where chi.value = :value and chi.parent = par)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...