交易管理超时问题

时间:2014-04-01 03:56:16

标签: mysql sql spring hibernate

我试图通过spring 2.5和hibernate 3从我们的应用程序运行查询,但查询既没有超时也没有返回结果(查询挂起),当我从查询浏览器运行相同的查询时它工作正常。

即使我增加了查询超时仍然无法获取结果。

我试图增加查询执行超时但无法返回记录

<property name="javax.persistence.query.timeout" value="3000" />

<tx:advice id="defaultTxAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <!-- Keep SequenceService in a isolation transaction -->
        <tx:method name="get*" read-only="true" />
        <!-- By default, A runtime exception will rollback transaction. -->
        <tx:method name="*" timeout="100" rollback-for="ApplicationException" />
    </tx:attributes>
</tx:advice>

非常感谢任何形式的帮助/建议

1 个答案:

答案 0 :(得分:0)

这些是我对此问题的看法。因为我在这里找不到相关的代码..

  1. 由于在单次提取中执行多个查询(hibernate中的n + 1问题)。 提示确保在开发者计算机中将show SQL值设置为true
  2. 由于代码中查询的不规则处理,例如,如果您要迭代n次。数据库服务器会将其视为某种威胁,并将其移至锁定状态并在一段时间内停止执行查询。
  3. 处理事务超时的处理不当,就像增加事务超时值一样,它可能会长时间锁定数据库。
  4. 还有其他可能性,但除非我看到代码,否则我无法提出任何建议。