Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @RetryTransaction:发现死锁时如何使其工作_Java_Spring_Transactions_Aspectj - Fatal编程技术网

Java @RetryTransaction:发现死锁时如何使其工作

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语

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语句
用于在失败时重试事务的已注释函数:

@覆盖
@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\u REQUIRED
    PROPAGATION的情况下,调用线程(在同一事务管理器下)中不得有已打开的事务。换句话说,被调用的方法必须是负责创建新事务的方法
  • 方法的类必须使用AspectJ编译器和
    RetryTransactionSpect
    方面(包括在DellLoad stuff JAR文件中)进行编织(在构建时或运行时)
  • retryTransactionSpect
    特性必须配置适合所使用ORM层的
    PersistenceExceptionTranslator
    。最简单的方法是在Spring应用程序上下文中包含方面,例如:

    <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配置,你找到解决这个问题的方法了吗?