您还可以使用 JPQL 中的连接来执行此操作:
select a from Aa a
inner join a.listBb b
inner join b.listCc c
where c.id = :cId
请注意,这里可以使用内部连接,因为您对 有一个限制c.id = :cId,只有在 B 和 C 存在时才适用。但是你也可以使用左连接。
编辑:
使用 Criteria 查询,它将如下所示(未经测试):
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Aa> criteria = builder.createQuery(Aa.class);
Root<Aa> a = criteria.from(Aa.class);
CollectionJoin<Aa, Bb> b = a.join(Aa_.listBb);
CollectionJoin<Bb, Cc> c = b.join(Bb_.listCc);
criteria.where(builder.equal(c.get(Cc_.id), cId));
return em.createQuery(criteria).getResultList();