试图锁定时发现死锁;尝试重新启动事务:@RetryTransaction

时间:2014-06-10 20:27:03

标签: java mysql spring hibernate deadlock

我正在使用mysql开发Java Spring Hibernate项目。

我试图在级联中插入一些插件。这些作业会被抛到集群上,因此它们几乎可以同时发生,因此存在死锁问题。

我有这个错误:

  

试图锁定时发现死锁;尝试重新启动交易

我发现here有针对spring developper的@RetryTransaction。一种配置here的方法。

他们说:

  

方法的类必须编织(在构建时或运行时)   使用AspectJ编译器和RetryTransactionAspect方面   (包含在dellroad-stuff JAR文件中)。

这是什么意思?

但我没有成功使它成功。它从不重启交易。我错过了什么?

谢谢!

@Override
@RetryTransaction
@Transactional
public void save(AnalyseResult analyseResult){

    @SuppressWarnings("deprecation")
    final int attempt = RetryTransactionAspect.getAttempt();

    System.out.println("#############");
    System.out.println("Retry Transact : "+attempt);
    System.out.println("#############"); 

    analyseResultDao.save(analyseResult);
}

在我的BeanConfig.xml中:

<bean class="org.dellroad.stuff.spring.RetryTransactionAspect" factory-method="aspectOf">
     <property name="persistenceExceptionTranslator" ref="hibernateExceptionTranslator"> </property>
    <property name="maxRetriesDefault" value="4"></property>
        <property name="initialDelayDefault" value="25"></property>
        <property name="maximumDelayDefault" value="5000"></property>
</bean>

0 个答案:

没有答案