Java @RetryTransaction:发现死锁时如何使其工作
Concurent事务使我的Sql语句失败。 我正试着用这辆车。但它似乎被忽视了。 我正在使用Spring3和Hibernate4 错误:Java @RetryTransaction:发现死锁时如何使其工作,java,spring,transactions,aspectj,Java,Spring,Transactions,Aspectj,Concurent事务使我的Sql语句失败。 我正试着用这辆车。但它似乎被忽视了。 我正在使用Spring3和Hibernate4 错误: 15:32:11331警告SqlExceptionHelper:145-SQL错误:1213,SQLState:40001 15:32:11331错误SqlExceptionHelper:147-尝试获取锁时发现死锁;尝试重新启动事务 15:32:11334信息AbstractBatchImpl:195-hh000010:在批处理发布时,它仍然包含JDBC语
15:32:11331警告SqlExceptionHelper:145-SQL错误:1213,SQLState:40001
15:32:11331错误SqlExceptionHelper:147-尝试获取锁时发现死锁;尝试重新启动事务
15:32:11334信息AbstractBatchImpl:195-hh000010:在批处理发布时,它仍然包含JDBC语句
用于在失败时重试事务的已注释函数:
@覆盖
@RetryTransaction
@交易的
公共作废保存(分析结果分析结果){
final int trunt=retryTransactionSpect.aspectOf().getAttemptNumber();
System.out.println(“###################”;
System.out.println(“重试事务:”+尝试);
System.out.println(“###################”;
analyseResultDao.save(analyseResult);
}
Beans.xml文件
检查您是否满足以下所有条件(根据):
- 方法(和/或包含类型)必须同时使用
和@Transactional
@RetryTransaction
注释必须将传播设置为@Transactional
或propagation\u REQUIRED
(其他传播值不涉及创建新事务)propagation\u REQUIRED\u NEW
- 在
PROPAGATION的情况下,调用线程(在同一事务管理器下)中不得有已打开的事务。换句话说,被调用的方法必须是负责创建新事务的方法PROPAGATION\u REQUIRED
- 方法的类必须使用AspectJ编译器和
方面(包括在DellLoad stuff JAR文件中)进行编织(在构建时或运行时)RetryTransactionSpect
特性必须配置适合所使用ORM层的retryTransactionSpect
。最简单的方法是在Spring应用程序上下文中包含方面,例如:PersistenceExceptionTranslator
<bean class="org.dellroad.stuff.spring.RetryTransactionAspect" factory-method="aspectOf" p:persistenceExceptionTranslator-ref="myJpaDialect"/>;
<bean class="org.dellroad.stuff.spring.RetryTransactionAspect" factory-method="aspectOf" p:persistenceExceptionTranslator-ref="myJpaDialect" p:maxRetriesDefault="2" p:initialDelayDefault="25" p:maximumDelayDefault="5000">;
这还使您有机会更改maxRetries()、initialDelay()和maximumDelay()的默认值,这些值在注释中未显式重写时应用,例如:;
<bean class="org.dellroad.stuff.spring.RetryTransactionAspect" factory-method="aspectOf" p:persistenceExceptionTranslator-ref="myJpaDialect"/>;
<bean class="org.dellroad.stuff.spring.RetryTransactionAspect" factory-method="aspectOf" p:persistenceExceptionTranslator-ref="myJpaDialect" p:maxRetriesDefault="2" p:initialDelayDefault="25" p:maximumDelayDefault="5000">;
;
save
方法的类吗?我也收到了一个类似的错误,我使用的是java配置,你找到解决这个问题的方法了吗?