有沒有辦法只為 Spring Boot 2 JPA 存盤庫中的一種方法更改Hibernate 默認事務超時值?我想為我的應用程式保留默認的 30 秒(它包含使用 Hibernate SessionFactory 的 JPA 存盤庫和遺留存盤庫),但允許一個通常需要更多時間才能運行的作業(編輯:發生在獨立事務中)。我想知道是否有一種方法可以指定特殊情況,就像您可以在某些情況下從回滾中排除事務一樣。
我正在尋找一種解決方案,它不需要創建與我用于其他方法不同的 HibernateTransactionManager。
uj5u.com熱心網友回復:
Spring 有一個@Transactional注解,用于標記應該在事務背景關系中運行的方法(以及作用域)。該注解有一個timeout屬性,可用于覆寫默認超時。
請注意,超時只能在事務級別設定,因此該timeout屬性僅在注釋導致新事務啟動時使用。該檔案特別指出:“專為與 Propagation.REQUIRED 或 Propagation.REQUIRES_NEW 一起使用而設計,因為它僅適用于新啟動的事務。”
Propagation.REQUIRED只會在還沒有活動事務時啟動新事務,因此如果您想確保設定了超時,則需要啟動一個新事務,因此最好使用Propagation.REQUIRES_NEW.
因此,注釋將是: @Transactional(timeout = 30, propagation = Propagation.REQUIRES_NEW)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/324664.html
