![](/img/trans.png)
[英]How to solve the “failed to lazily initialize a collection of role” Hibernate exception
[英]In Hibernate JPA how to transparently solve “ failed to lazily initialize a collection of role ” exception
我正在將一個巨大的項目從Eclipselink遷移到在Wildfly 10.0上運行的Hibernate JPA
移到Hibernate之后,我得到了一個著名的例外:“未能懶惰地初始化角色集合”
我發現了許多針對此問題的解決方案,例如關於此Question的這些建議以及舊的OpenSessionInView方法。
但是這些解決方案已經過時了,需要在我使用eclipselink的現有代碼上進行一些更改。
他們是可以節省我時間的更新,現代,透明的解決方案嗎?
注意 :我沒有使用spring(僅JPA和EJB)。
我認為您正在尋找hibernate.enable_lazy_load_no_trans
配置屬性。 但這是一個反模式。 僅僅因為其他JPA提供程序正在使用它,並不意味着它同樣有效,甚至是適當的。
“修復” LazyInitializationException
另一種不好的方法是View中的Open Session,它也是Anti-Pattern 。
處理LazyInitializationException
的最佳方法是JOIN FETCH
所有一對一和多對一關聯,以及單個單個多對關聯。
如果您需要獲取多個一對多或多對多關聯,則第一個關聯應為JOIN FETCH-ed
,而隨后的關聯應使用單獨的查詢初始化。 您可以導航關聯以觸發初始化,也可以使用Hibernate#initialize
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.