NTy*_*ler 5 spring hibernate jpa quartz-scheduler
我们使用的是Spring 3.1,JPA(通过Hibernate)和Quartz.通常,我们通过Service Bean上的@PersistenceContext注释以及SpringMVC控制器或GraniteDS管理的服务调用与DB进行交互.
我正在编写一个需要与数据库交互的Quartz作业.我已经尝试了所有我能找到的工作.我尝试通过jobMap传递Spring管理的组件(使用@PersistenceContext和@Transactional注释),对entityManager.persist(o)的调用执行,但数据库中没有任何反应.我也试过类似这个答案,创建一个工厂类来调用作业对象上的autowireBean().我设置了这样的工作类:
public class CreateAlertJob implements Job {
@PersistenceContext
EntityManager entityManager;
@Override
@Transactional
public void execute(JobExecutionContext context) throws JobExecutionException {
SomeEntity entity = new SomeEntity();
entityManager.persist(entity);
}
}
Run Code Online (Sandbox Code Playgroud)
同样的结果,该方法执行但数据库未更改.我发现这篇博文引用了一个GitHub项目.在那里他使用JpaInterceptor建立一个Hibernate会话,但这使用DAO模式,我想坚持使用@PersistenceContext.
显然有一些关于Quartz线程阻止它正常工作的东西?我想出了一些想法,并考虑将一个Web服务调用到一个SpringMVC控制器,只是为了让它工作.
因为你CreateAlertJob不是由Spring创建的,@Transactional所以它不会生效.
您有以下选择:
@Transactional那里| 归档时间: |
|
| 查看次数: |
2775 次 |
| 最近记录: |