如何将带有“where”子句的JPQL“join fetch”正确地表达为JPA 2 CriteriaQuery?
请考虑以下 JPQL 查询:
SELECT foo FROM Foo foo
INNER JOIN FETCH foo.bar bar
WHERE bar.baz = :baz
我正在尝试将其转换为条件查询。据我所知:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Foo> cq = cb.createQuery(Foo.class);
Root<Foo> r = cq.from(Foo.class);
Fetch<Foo, Bar> fetch = r.fetch(Foo_.bar, JoinType.INNER);
Join<Foo, Bar> join = r.join(Foo_.bar, JoinType.INNER);
cq.where(cb.equal(join.get(Bar_.baz), value);
这里明显的问题是,我正在执行两次相同的连接,因为似乎没有方法可以获得.有没有办法避免必须加入两次?还是我必须坚持使用像这样简单的查询的旧的JPQL?Fetch<Foo, Bar>
Path