繁体   English   中英

休眠左联接返回对象

[英]Hibernate left join returns objects

我正在做一个查询,它返回对象而不是自定义类:

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()将返回Authors(及其链接的文档)列表,但这是对象列表。 我究竟做错了什么?

未键入Query中的方法getResultList()
因此,似乎它仅返回Objects (实际上是您的情况下Author的实例),您必须手动将其强制转换为Author (例如,您可以通过检查实例上的getClass()来检查Object真正含义。)

您可以使用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的本教程对此进行了很好的介绍。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM