栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

org.hibernate.LazyInitializationException:无法初始化代理-没有会话?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

org.hibernate.LazyInitializationException:无法初始化代理-没有会话?

尝试添加

@Transactional
到validate方法:

@Override@Transactional(readonly=true)public void validate(Object target, Errors errors) {    ...}

发生的事情是,因为没有

@Transactional
注释,所以没有与该方法关联的会话,并且每个查询都将在其自己的会话中运行,该会话随后将立即关闭。

该方法

session.load()
始终返回一个代理,与之不同
session.get()
(请参阅此处,了解load与get之间的差异)。

因此,返回了代理,但是由于缺少

@Transactional
代理,因此立即关闭了创建代理的会话。第一次访问代理时,它的会话已关闭,因此我们收到“无会话”错误。

如果从更改

load()
get()
,则只能部分解决问题,因为如果在get之后尝试加载例如惰性初始化集合,则异常会再次发生。

添加

@Transactional
到业务方法将确保在方法调用期间存在相同的会话,并防止发生此错误和其他相关错误。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/467101.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号