3 回答

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
有很多預(yù)取屬性的方法,因此在關(guān)閉會(huì)話后就可以使用它們:
呼叫適當(dāng)?shù)奈鼩鈩?。在將字段提取到bean中之后,在關(guān)閉會(huì)話之后它在那里。
您可以在EJBQL查詢中初始化字段,尋找
JOIN FETCH
關(guān)鍵字。如果您使用的是支持Hibernate的版本,請(qǐng)啟用AvailableSettings.ENABLE_LAZY_LOAD_NO_TRANS。
當(dāng)您嘗試這些解決方案時(shí),可能會(huì)出現(xiàn)幾個(gè)問(wèn)題:
通過(guò)JIT編譯器可以優(yōu)化getter的調(diào)用(有時(shí)需要一段時(shí)間)。
您嘗試建立的實(shí)體
JOIN FETCH
可能通過(guò)涉及List的多個(gè)“許多”關(guān)系進(jìn)行鏈接。在這種情況下,結(jié)果查詢將返回模糊的結(jié)果,并且Hibernate將拒絕在單個(gè)查詢中獲取您的數(shù)據(jù)。已經(jīng)存在一個(gè)與AvailableSettings.ENABLE_LAZY_LOAD_NO_TRANS相關(guān)的有趣錯(cuò)誤。還會(huì)有更多的原因,因?yàn)檎缍叩募一锼f(shuō):注意:這可能在交易之外發(fā)生,并且不安全。請(qǐng)謹(jǐn)慎使用。您主要是自己一個(gè)人。
最好的方法是先嘗試JOIN FETCH
。如果那不起作用,請(qǐng)嘗試使用吸氣劑方法。如果JIT編譯器在運(yùn)行時(shí)將其弄亂了,請(qǐng)將結(jié)果分配給public static volatile Object
。
或停止使用Hibernate ...
添加回答
舉報(bào)