假設兩個表,A[a_id, b_id]
和B[b_id,c]
的屬性。HQL:爲了通過可爲空的屬性
我需要執行表格"From A a ORDER BY a.b.c"
的HQL查詢,而b
可以在類A
中爲空。
查詢,但是,只返回A
具有非空b
財產情況。 這是因爲Hibernate的生成形式"SELECT FROM A,B WHERE A.b_id = B.b_id ORDER BY B.c"
什麼是返回A
與那些在b
null
所有情況下出現第一個/最後的方式SQL?
假設兩個表,A[a_id, b_id]
和B[b_id,c]
的屬性。HQL:爲了通過可爲空的屬性
我需要執行表格"From A a ORDER BY a.b.c"
的HQL查詢,而b
可以在類A
中爲空。
查詢,但是,只返回A
具有非空b
財產情況。 這是因爲Hibernate的生成形式"SELECT FROM A,B WHERE A.b_id = B.b_id ORDER BY B.c"
什麼是返回A
與那些在b
null
所有情況下出現第一個/最後的方式SQL?
什麼:
from A a left join a.b_fk b order by b.c
左側加入照顧使加入的,即使b_fk
財產上的Java實體(不表)爲空。
編輯:對不起,我mentionned不同的排序空值。要排序(不考慮空值),可以指定'desc'來反轉排序順序(default ='asc')。對於空值,我相信Hibernate允許默認的數據庫命令...自己嘗試一下你的數據庫,看看會發生什麼(對不起,在後期的第一個版本誤導)。
大量的信息可以Hibernate的參考文檔中找到:
http://docs.jboss.org/hibernate/stable/core/reference/en/html/queryhql.html
其餘的通常取決於你使用的數據庫...
我有同樣的問題,我必須解決它像這:
SELECT a
FROM a
LEFT JOIN a.b b
LEFT JOIN b.c c
ORDER BY c.id
這是在HQL語法!
「左JOIN」允許顯示線時,孩子是NULL。
事實上,如果不指定連接時,Hibernate會自動創建一個「INNER JOIN」,它刪除NULL孩子。