最簡單的方法是創建自定義TransactionFactory
,它將檢查是否存在活動事務並以其他方式拋出異常。
class MandatoryTransactionSpringManagedTransactionFactory extends SpringManagedTransactionFactory {
public Transaction newTransaction(DataSource dataSource, TransactionIsolationLevel level, boolean autoCommit) {
if (!TransactionSynchronizationManager.isActualTransactionActive()) {
throw new IllegalTransactionStateException(
"No existing transaction found during mapper invocation");
}
return super.newTransaction(dataSource);
}}
它應該被用來配置org.mybatis.spring.SqlSessionFactoryBean
謝謝!我知道有一個鉤子,我可以把一些邏輯,我只是無法找到它。偶然我還發現,用@Tranactional註釋我的映射器接口每個都有訣竅,但是您的解決方案確保我不會忘記這麼做。 – Ben 2014-10-31 18:27:50