[英]Hibernate lazy-loaded collections and PropertyChangeSupport
[英]Which Hibernate FetchMode will cause collections to be lazy-loaded?
我在Hibernate論壇上問過這個問題,但沒有得到完整的答復,所以我想我會在這里重新發布。 這是原始問題主題:
http://forum.hibernate.org/viewtopic.php?f=1&t=1008243&p=2438963#p2438963
簡而言之,我有一個自定義HQL查詢將兩個完全不相關的表連接在一起,我試圖通過禁用加載我的Hibernate映射中存在的關聯集合來防止“O(N + 1)選擇”問題的POJO。
顯然,我可以使用Hibernate 獲取配置文件 ,但有一個障礙。 這是Hibernate的FetchMode.java所說的:
/**
* Fetch using an outer join. Equivalent to <tt>fetch="join"</tt>.
*/
public static final FetchMode JOIN = new FetchMode("JOIN");
/**
* Fetch eagerly, using a separate select. Equivalent to
* <tt>fetch="select"</tt>.
*/
public static final FetchMode SELECT = new FetchMode("SELECT");
/**
* Fetch lazily. Equivalent to <tt>outer-join="false"</tt>.
* @deprecated use <tt>FetchMode.SELECT</tt>
*/
public static final FetchMode LAZY = SELECT;
所以,“LAZY”並不是很懶,它只是“SELECT”,這正是我想要避免的。
是否有一個提取模式可以防止加載集合? 如果沒有,是否有其他方法可以在特定HQL查詢過程中禁用集合加載?
我意識到實現這一點的傳統方法是使用Criteria查詢,但我需要對任意屬性進行連接,據我所知,沒有Criteria。
首先,我認為hibernate的默認行為是使用延遲加載。 所以檢查是否已經是這種情況。
然后,我相信他們錯誤地記錄了文檔中的注釋,而SELECT
應該是一個懶惰的提取(如果你查看最新版本的hibernate的文檔,那么'急切'這個詞就被刪除了)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.