這不是一個技術問題,只是一種語法修正,我沒有得到。如何在Hibernate查詢語言中使用提取
我有休眠3.6,我已經在xml文件中映射了我的模型類。這些XML文件中提到的默認類型是這些類將被帶入懶惰。由於它的硬編碼,我無法改變這種行爲。
我試圖帶來的模型看起來像這樣。
class A {
private int id;
private B b;
private C c;
}
B類和C類需要在我的情況下急切地加載。
所以我寫了這樣的查詢。
from A.class.getName() a where a.id = :id;
在這個查詢中,我在哪裏放置fetch關鍵字。 下面一個拋出錯誤:
from A.class.getName a fetch where a.id = :id;
在互聯網上的例子,他們正在做一些連接的查詢,然後得到一些價值觀是這樣的:
from Cat as cat inner join fetch cat.mate left join fetch cat.kittens
然而,在我的情況,所有的連接是在xml文件內部完成的。我不必在查詢中進行連接。那麼我在哪裏放置「fetch」關鍵字來聲明同時啓動所有鏈接類(B和C)也是非懶惰的。
注:
- 我不能使用標準的API,因爲我不想在我的項目中添加額外的罐子。
你的意思是「所有連接都是在xml文件內部完成的」?爲什麼你不能使用類似網上樣本的東西? '從A內部聯接獲取a.b爲b,其中a.id =:id' – 2014-11-15 01:05:25
在我的xml文件中,我已經定義了一對多和多對多的關係。那麼爲什麼我需要顯式加入hql?我只想使用hql查詢來告訴它獲取所有關聯的類,而不是再次連接。我對麼? – Rash 2014-11-15 01:53:11
'fetch'用於覆蓋關係的'lazy-eager'行爲。如果你有'b'作爲'lazy'加載關聯,你可以使用fetch來強制hibernate加載'b'。如果'b'是'eager'加載的,則不需要'fetch'。 – 2014-11-15 02:05:59