2014-09-10 91 views
-1

我有以下查询工作正常,但然后我不得不将它转换为hibernate投影性能问题。通过hibernate投影创建报表时HQL查询的错误

NamedQuery = " SELECT o FROM OrderJob o "

转化为: -

String hqlQuery = "select " 
     + "new JobAuditListVO(o.jobDate, o.jobType, customer.name, job.street, payment.description, p.paid,o.invoice) " 
     + " from OrderJob o " 
     + " join o.order ordr " 
     + " join ordr.customer customer " 
     + " join o.jobAddress job " 
     + " join o.payment p" 
     + " join p.paymentReceivedMethod payment"; 
getEntityManager().createQuery(hqlQuery).getResultList(); 

但是列表被返回0的结果。名称查询返回2结果。

+0

如果您可以根据需要包含OrderJob(可能包括JobAuditListVO和Customer)的结构以检查查询是否应该实际上是句法上等效的,那么这将非常有帮助... – Vogel612 2014-09-10 13:01:03

回答

0

我已经得到了答案。这两个查询都是完全相同的。 问题是我不得不使用左连接而不是简单连接。因为有些实体返回null。

+0

Pro-tip ..关系中的空值通常一个标志,你的数据库方案有一个问题正确映射你的用例。应该可以通过[标准化数据库]清除空值(http://en.wikipedia.org/wiki/Database_normalization) – Vogel612 2014-09-11 13:47:40