0
我正在嘗試使用transactionTemplate來管理我的事務。該代碼可以列出如下:transactionTemplate不適用於mybatis,但我不知道爲什麼
private Boolean isCleanSuccess(){
return transactionTemplate.execute(new TransactionCallback<Boolean>() {
@Override
public Boolean doInTransaction(TransactionStatus transactionStatus) {
String rmcName = "sync";
StringBuilder sbSync = new StringBuilder();
sbSync.append("delete from `t_sync_data_plan` WHERE 1=1");
StringBuilder sbRmc = new StringBuilder();
sbRmc.append("delete from `t_rmc_data` where `name`=\"")
.append(rmcName)
.append("\"");
try{
jdbcTemplate.execute(sbSync.toString());
jdbcTemplate.execute(sbRmc.toString());
/**
* throw the exception to make it rollback
*/
// throw new RuntimeException();
return true;
}catch (Exception ex){
LOG.error(ex);
transactionStatus.setRollbackOnly();
return false;
}
}
});
}
當我應付道使用JdbcTemplate的,它的工作原理。但是,如果我在使用myBatis時拋出異常,它就不能回滾。該XML代碼列出如下:
我不知道爲什麼回滾只是工作的JdbcTemplate下,但在MyBatis的失去功效。表的引擎是InnoDB。 你能幫我一下嗎?近兩週我一直困惑不解。 對不起,我可憐的英語帶來了不便。
謝謝您的回答。似乎'multipleDataSource'有問題。我的工作人員剛剛找到了原因並修復了這個錯誤。曾經,我也嘗試使用@Transactional,但是我的代碼樣式必須與其他人一致。不管怎樣,謝謝你! – Merorin