簡體   English   中英

在Hibernate JPA中如何透明地解決“無法延遲初始化角色集合”的異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM