求助大神! 用spring定时器修改数据库数据时 org.hibernate.LazyInitializationException

li346985170 2014-03-11 04:21:21
我在 WriteSztStateServiceImpl 类中调用 dao层的操作数据库的方法


try {
reportManager.updateReport(report);
writeSztStateManager.update(state);
} catch (Exception e) {
e.printStackTrace();
}

----------WriteSztStateManager //extends BaseManager

public void update(WriteSztState state){
System.out.println("111111111111");
super.update(state);
}

---------- ReportManager //extends BaseManager

public void updateReport(Report report){
System.out.println("2222222222");
super.update(report);
}


------BaseManager

public void update(Object entity) {
System.out.println("basemanager");
try {
getHibernateTemplate().update(entity);
} catch (Exception e) {
System.out.println("basemanager_update"+e.getMessage());
}
}

结果报异常 :org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
我在 WriteSztStateServiceImpl 中打断点,可以进入调试,但进入下一步就直接报异常了
--然后我再进一步断点 在 ReportManager 和 WriteSztStateManager 中设置断点,但是调试就是进不去,而且写的system.out 也没有输出
--最后在 BaseManager 里面也加上了断点,后来还是没进去 ,所有的输出都没有
跪求大神帮忙解释一下!
...全文
96 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
li346985170 2014-03-11
  • 打赏
  • 举报
回复
老大说任务调用的方法会在一个事物里把session延续,让这个任务里的方法的所有操作都在同一个session中. 我把 WriteSztStateServiceImpl 和它对应的接口 WriteSztStateService 在从一个包移到另外的一个包中的时候移错了位置,所以导致事务配置时的切入点配置规则跟我的类匹配不上,所以就没被事务控制了,session也就出问题了

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧