[英]Hibernate : failed to lazily initialize a collection
我有兩個實體:User和Module wich使用多對多鏈接。
在我的用戶實體中,我有一個模塊列表成員:
我成功插入了一個新用戶,但是當我要檢索用戶時,我得到了用戶信息,但沒有得到用戶的模塊。 我收到此錯誤消息:
.hibernate.LazyInitializationException:無法延遲初始化角色集合:ma.propar.FireApp.Entites.Utilisateur.modules,無法初始化代理-沒有會話
默認情況下, user.modules
@ManyToMany
列表為LAZY,因此,在獲取users
您只會獲得一個user.modules
代理。
如果Hibernate Session
關閉,則在未獲取LazyInitializationException
情況下將無法訪問未初始化的代理。
要在同一HQL查詢中獲取模塊,您需要使用“獲取”:
select u from Utilisateur u left join fetch u.modules
盡管您可以將關聯設置為FetchType.EAGER
以便始終沿用戶檢索模塊
@ManyToMany(fetch=FetchType.EAGER)
為了piggy帶弗拉德的答案,您可以通過注釋來實現
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
@ManyToMany(cascade = CascadeType.ALL,fetch=FetchType.EAGER)
@Fetch(FetchMode.SELECT)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.