使用Hibernate Criteria加入两个表

时间:2011-12-02 19:40:56

标签: hibernate hibernate-criteria

采用以下示例实体:

Entity Child {
    long id;
    String name;
    long parentKey;
}

Entity Parent {
    long id;
    String desc;
}

有没有办法使用Hibernate Criteria查询:

select * from Child c, Parent p 
         where c.parentKey = p.id and c.name = "whatever" and p.desc = "whatever"

我们主要关注的是如何跨两个仅相关的实体加入Criteria 通过长键

假设我们无法直接在我们的孩子中引用Parent。

1 个答案:

答案 0 :(得分:1)

嗯,不确定你指的是什么Hibernate版本,但在JPA 2.0中这样的事情是可能的:

String query = "SELECT c FROM Child c, Parent p WHERE c.parentId = p.id";

List<Child> children = em.createQuery(query, Child.class).getResultList();

通过这种方式,您可以根据自定义条件明确地进行JOIN,而不是让JPA管理它,尽管这样做是完全合法的。