簡體   English   中英

Hibernate 和 Oracle 中的事務超時

[英]Transaction timeout in hibernate and Oracle

您知道如何設置EntityManager.persist()操作將尊重的事務超時嗎? TransactionTemplate.setTimeout()在插入記錄期間似乎被完全忽略了。 在我的應用程序中,事務可能會嘗試將行插入到被另一個線程鎖定的表中。 我想跳過等待這個鎖並在應用程序中報告它。

我試圖啟動將中斷事務線程的單獨線程,但 oracle 驅動程序忽略了中斷。 您知道休眠中事務超時的任何可靠機制嗎?

我發現的一種解決方案是使用

((SessionImpl) entityManager.unwrap(Session.class))
    .connection()
    .setNetworkTimeout(timeoutCleanupExceutor, (timeoutInSeconds + 1) * 1000)

它並不漂亮,但它只是在TransactionTemplate.setTimeout()被忽略時有效的替代方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM