JPA 2 Criteria Fetch Path Navigation

30 浏览
0 Comments

JPA 2 Criteria Fetch Path Navigation

使用JPA 2 Criteria Join方法,我可以做到以下事情:

    //Join示例(默认内连接)
    int age = 25;
    CriteriaBuilder cb = entityManager.getCriteriaBuilder();
    CriteriaQuery c = 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();
    CriteriaQuery cq = 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对象。

http://docs.jboss.org/hibernate/stable/entitymanager/reference/en/html/querycriteria.html#querycriteria-from-fetch

0