Hibernate左连接返回对象

时间:2012-02-27 13:52:41

标签: java hibernate

我正在进行一个返回对象而不是自定义类的查询:

Query q = em.createQuery("FROM Author a LEFT JOIN a.documents d LEFT JOIN d.personDocuments pd WHERE pd.person = :person ORDER BY a.lastName");
q.setParameter("person", person);
return new HashSet<Author>(q.getResultList());

我希望q.getResultList()会返回一个作者列表(及其链接文档),但它是一个对象列表。我做错了什么?

1 个答案:

答案 0 :(得分:3)

Query中的getResultList()方法未输入 因此,它似乎只返回Objects(在您的情况下实际上是Author的实例),您手动必须将其转换为Author。 (例如,您可以通过检查实例上的Object来检查getClass()到底是什么。)

您可以使用TypedQuery进行类型化查询,这些查询可以根据需要使用。

TypedQuery<Author> q = em.createQuery("SELECT a FROM Author a LEFT JOIN a.documents d LEFT JOIN d.personDocuments pd WHERE pd.person = :person ORDER BY a.lastName", Author.class);
q.setParameter("person", person);
return new HashSet<Author>(q.getResultList());

来自objectdb的Tutorial非常清楚。