我正在进行一个返回对象而不是自定义类的查询:
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()会返回一个作者列表(及其链接文档),但它是一个对象列表。我做错了什么?
答案 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非常清楚。