2014-09-10 83 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