2013-11-22 109 views
0

有人可以幫我寫相當於HQL此查詢Hibernate查詢等效SQL

SELECT IFNULL(oea.`organization_name`,'') FROM `consultation_appointment` ca 
JOIN `organization_employee_association` oea ON ca.`consultation_id` = oea.id 
JOIN professional_profile pp ON oea.`employee_profile_id` = pp.profile_id 

我可以能夠參加第一JOIN這樣

select ca.name from ConsultationAppointment ca join ca.consultation oea 

因爲有organization_employee_association變量ConsultationAppointment類所以更容易加入,難度是organization_employee_association沒有直接映射到organization_employee_association類。

即使是GORM標準查詢也很有幫助。

+0

均勻,加入這個協會... –

+0

@JB Nizet,如果你不介意的話,你可以使它更清楚 –

+0

你知道你需要實體之間的關聯,以創建之間的連接這些實體。所以添加必要的關聯。如果不知道任何實體和表格,我就不會更精確。 –

回答

1

HQL不允許加入兩個不相關的實體,您應該使用笛卡爾積。

String query = "SELECT ca.name FROM consultation_appointment ca JOIN organization_employee_association oea, professional_profile pp WHERE oea.employee_profile_id = pp.profile_id"; 
List<String> caNames = session.createQuery(query).list(); 

另一種可能性是使用方法createSQLQuery()。它爲執行任意連接提供了更大的靈活性。

String query = "SELECT ca.name FROM consultation_appointment ca JOIN organization_employee_association oea ON ca.consultation_id = oea.id JOIN professional_profile pp ON oea.employee_profile_id = pp.profile_id"; 
List<String> caNames = session.createSQLQuery(query).list(); 
+0

而上升,但只有在沒有可能的情況下才可以嘗試。但是在hql中應該有一些方法,我們需要挖掘 –

+0

我編輯了使用HQL和笛卡爾積的答案。 – thanhnguyen

+0

感謝您的努力,但出現錯誤,我們也嘗試過這樣,錯誤是在查詢中使用「on」子句 –