Spring 春季石英作业中的休眠会话
TL;DR:是否需要围绕Quartz作业调用手动设置Hibernate会话? 我在Spring中运行了quartz调度程序,但在quartz作业中使用Hibernate时,它的行为非常奇怪 我有JPA存储库,按如下方式使用这些存储库可以正常工作Spring 春季石英作业中的休眠会话,spring,hibernate,quartz-scheduler,Spring,Hibernate,Quartz Scheduler,TL;DR:是否需要围绕Quartz作业调用手动设置Hibernate会话? 我在Spring中运行了quartz调度程序,但在quartz作业中使用Hibernate时,它的行为非常奇怪 我有JPA存储库,按如下方式使用这些存储库可以正常工作 Reservation reservation = reservationRepo.findOne(resId); 但是,当我尝试按如下方式使用此实体时,会出现后续异常 User owner = reservation.getRoom().getOwn
Reservation reservation = reservationRepo.findOne(resId);
但是,当我尝试按如下方式使用此实体时,会出现后续异常
User owner = reservation.getRoom().getOwner();
例外情况:
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
如果我将spring日志设置为TRACE
,我会看到一些JPA/Transaction/Thread魔术,但似乎每个对所用bean的调用都会进行排序,并且线程上不存在托管的hibernate会话
我是否需要围绕Quartz作业调用创建一个Hibernate会话?我认为您在
Quartz作业中使用的保留
对象加载到不同的事务中?您是否有权在您可以调用的merge
方法中访问Quartz作业中的Hiberate Session
?您的方法需要是事务性的。@madhusudanareddysunapu谢谢,但这两行代码在Quartz作业中相邻。@M.Deinum谢谢,这是答案。由于EventBus实现,我有一定程度的间接性,这导致了事务性的问题。事实证明,创建事务服务来处理作业是成功的。请随意创作和回答,我会接受的。