JPA 2 Criteria Fetch Path Navigation
JPA 2 Criteria Fetch Path Navigation
使用JPA 2 Criteria Join方法,我可以做到以下事情:
//Join示例(默认内连接) int age = 25; CriteriaBuilder cb = entityManager.getCriteriaBuilder(); CriteriaQueryc = cb.createQuery(Team.class); Root t = c.from(Team.class); Join p = t.join(Team_.players); c.select(t).where(cb.equal(p.get(Player_.age), age)); TypedQuery q = entityManager.createQuery(c); List result = q.getResultList();
我如何使用fetch方法做到同样的事情,我期望Fetch接口具有用于路径导航的get方法,但事实并非如此:
//Fetch Join示例 int age = 25; CriteriaBuilder cb = entityManager.getCriteriaBuilder(); CriteriaQuerycq = cb.createQuery(Team.class); Root t = cq.from(Team.class); Fetch p = t.fetch(Team_.players); cq.where(cb.equal(p.get(Player_.age), age)); //这导致编译错误,接口Fetch中没有这样的方法get TypedQuery q = entityManager.createQuery(cq); List result = q.getResultList();
根据Hiberante文档,fetch返回一个错误的Join对象。