我试图通过 springs 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>
任何形式的帮助/建议将不胜感激
最佳答案
这些是我对这里问题的想法。因为我在这里找不到任何相关代码..
- 由于在单次提取中执行多个查询(类似于 hibernate 中的 n+1 问题)。 提示:确保在开发者计算机中将显示 SQL 值设置为 true
- 由于代码中查询处理不规则,例如迭代 n 次。数据库服务器会将其视为某种威胁,并进入锁定状态并停止执行查询一段时间。
- 事务超时处理不当,例如如果您增加事务超时值,则可能会长时间锁定数据库。
还有其他可能性,但除非我看到代码,否则我无法提出任何建议。
关于mysql - 事务管理超时问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22776503/