JPA标准-如何准备SELECT IN查询

时间:2019-02-04 11:58:50

标签: java spring jpa

我有一个相当简单的SQL查询,我需要根据另一个子表上的查询从父表中获取数据。例如:

父表:

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

子表:

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

所以我需要一个这样的SQL查询,该查询将获取任何有孩子的父母的名字,这些孩子的名字是 Joe -即Frederick和Robert。

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

这会让我的孩子叫 Joe

那我该如何找那些孩子的父母呢?

基于this question,我尝试过这样:

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!!

0 个答案:

没有答案