我有两个实体:用户和模块使用多对多链接。
在我的用户实体中,我有一个模块列表成员:
我成功插入了一个新用户,但是当我想要检索用户时,我获得了用户信息,但我没有得到用户的模块。我收到此错误消息:
.hibernate.LazyInitializationException:懒得初始化角色集合:ma.propar.FireApp.Entites.Utilisateur.modules,无法初始化代理 - 没有会话
答案 0 :(得分:1)
默认情况下,user.modules
@ManyToMany
列表为LAZY,因此当您抓取users
时,您只会获得user.modules
代理。
如果Hibernate Session
已关闭,则在未获取LazyInitializationException
的情况下,您将无法访问未初始化的代理。
要在同一个HQL查询中获取模块,您需要使用“fetch”:
select u from Utilisateur u left join fetch u.modules
虽然您可以将关联设置为FetchType.EAGER
,以便始终沿用户
@ManyToMany(fetch=FetchType.EAGER)
答案 1 :(得分:0)
捎带弗拉德的答案,注释可以用
实现提取import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
@ManyToMany(cascade = CascadeType.ALL,fetch=FetchType.EAGER)
@Fetch(FetchMode.SELECT)