我有一个 AuthenticationFilter ,它从HTTP-Request读取一个令牌,从数据库加载用户对象并将其设置为 SecurityContextHolder :
SecurityContextHolder.getContext().setAuthentication(resultOfAuthentication);
现在在控制器类的请求处理程序中,我想访问一个懒惰加载的User-object字段。问题是我得到 LazyInitializationException ,因为会话已关闭:
org.hibernate.LazyInitializationException:懒得初始化 一组角色:a.b.c.User.devices,可以 不初始化代理 - 没有会话
在请求完成之前,我如何才能保持会话开放?这样我可以懒惰地加载用户对象的字段?
答案 0 :(得分:0)
您必须将该调用包含在@Transactional方法中,或者将事务边界移到调用层次结构中更高的位置,以便包含调用。
其他选择是:
join fetch
)Hibernate.initialize(user.getAddresses());
user.getAddresses().size
: