我想對Hibernate數據集進行排序,按照(可選)關聯對象的屬性進行排序。我遵循hibernate order by association的例子 - 這在某種程度上是有效的。問題出現在沒有關聯的對象時,整個記錄被忽略。休眠根據關聯(可選)字段排序
如果我將對象的關聯類型更改爲外部聯接,它會有幫助嗎?如果是這樣,有人可以請我指出正確的指示嗎?
非常感謝。
我想對Hibernate數據集進行排序,按照(可選)關聯對象的屬性進行排序。我遵循hibernate order by association的例子 - 這在某種程度上是有效的。問題出現在沒有關聯的對象時,整個記錄被忽略。休眠根據關聯(可選)字段排序
如果我將對象的關聯類型更改爲外部聯接,它會有幫助嗎?如果是這樣,有人可以請我指出正確的指示嗎?
非常感謝。
引用的問題使用了Criteria查詢,所以我不確定您是否需要這些答案或者您是否只需要HQL。假設HQL是OK,如果你有這樣的實體:
class EntityA {
private Long id;
@OneToMany
private EntityB b;
....
}
class EntityB {
private Long id;
private String name;
}
如果你有EntityA和EntityB之間的可選的一對多關係,那麼你應該能夠使用的查詢是這樣的:
"SELECT obj FROM " + EntityA.class.getName() + " obj LEFT JOIN obj.b obj2 ORDER BY obj2.name";
您將在哪裏選擇所有EntityA
加入EntityB
它存在的位置,按EntityB.name
字段排序。
我設法解決了只有一行代碼更改的問題。在構建Criteria對象時,我能夠傳遞參數JoinFragment.LEFT_OUTER_JOIN。例如:
Criteria subCriteria = criteria.createCriteria(subTypeName, JoinFragment.LEFT_OUTER_JOIN);
THX您的時間,但我試圖避免HQL,因爲對象是非常複雜的,有很多加入的,所以我沒有看到重新實現所有這些連接點個別。 – readikus