在Spring批处理中启动作业时发生Hibernate代理错误
在Spring批处理中启动作业时发生Hibernate代理错误,hibernate,spring-batch,spring-batch-admin,Hibernate,Spring Batch,Spring Batch Admin,您好,我在Spring批处理应用程序中遇到hibernate错误 ERROR: org.springframework.batch.core.job.AbstractJob - Encountered fatal error executing job org.springframework.dao.OptimisticLockingFailureException: Attempt to update job execution id=33 with wrong version (0), wh
您好,我在Spring批处理应用程序中遇到hibernate错误
ERROR: org.springframework.batch.core.job.AbstractJob - Encountered fatal error executing job
org.springframework.dao.OptimisticLockingFailureException: Attempt to update job execution id=33 with wrong version (0), where current version is 1
at org.springframework.batch.core.repository.dao.JdbcJobExecutionDao.updateJobExecution(JdbcJobExecutionDao.java:210)
at org.springframework.batch.core.repository.support.SimpleJobRepository.update(SimpleJobRepository.java:155)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy54.update(Unknown Source)
at org.springframework.batch.core.job.AbstractJob.updateStatus(AbstractJob.java:383)
at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:276)
at org.springframework.batch.core.launch.support.SimpleJobLauncher$1.run(SimpleJobLauncher.java:120)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
根据错误日志,我在抽象作业类(由Spring Batch提供)中遇到代理错误
我猜由于抽象作业类没有任何非参数构造函数,CGLIB无法提供任何代理类。。
我怎样才能解决这个问题?
我现在使用的是spring批处理管理这个异常
org.springframework.dao.OptimisticLockingFailureException: Attempt to update job execution id=33 with wrong version (0), where current version is 1
意味着由于某种原因,您的step事务锁定失败
可能是因为您的业务逻辑事务被设置为RollbackOnly模式,这将导致spring表的状态不一致=>发生乐观锁定
尝试添加hibernate的日志记录和实际sql的显示。这可能会帮助您找出问题的实际所在