JPA Критерии - Как подготовить запрос SELECT IN - PullRequest
0 голосов
/ 04 февраля 2019

У меня довольно простой SQL-запрос, в котором мне нужно получить данные из родительской таблицы на основе запроса другой дочерней таблицы.Например:

Родительская таблица:

ID NAME
-- ----
22 Frederick
26 James
39 Robert

Дочерняя таблица:

PARENT_ID NAME
--------- ----
22        Joey
22        Cindy
26        Robbie
39        Joe

Поэтому мне нужен такой SQL-запрос, который бы получал имена любых родителей, которыеиметь ребенка с именем вроде Джо - то есть Фредерик и Роберт.

select NAME from PARENTS where ID in (
  select PARENT_ID from CHILDREN where NAME like '%Joe%'
);

Я пытаюсь что-то вроде этого:

Subquery<Child> childSubquery = criteriaQuery.subquery(Child.class);
Root<Child> childRoot = childSubquery.from(Child.class);
Predicate likeChild = criteriaBuilder.like(childRoot.get(Child_.name), '%Joe%');

Это получитмне дети с такими именами, как Джо .

Так, как мне тогда получить родителей этих детей?

Исходя из этого вопроса , япопробовал так:

CriteriaQuery<Parent> parentQuery = criteriaBuilder.createQuery(Parent.class);
Root<Parent> parentRoot = parentQuery.from(Parent.class);
parentQuery.select(parentRoot);
parentQuery.where(likeChild);
parentQuery.getResultList() <--- this method doesn't exist in CriteriaQuery!!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...