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을 사용하여 Dao를 처리 할 때 작동합니다. 그러나 MyBatis를 사용할 때 Exception을 throw하면 롤백 할 수 없습니다. XML 코드는 다음과 같이 나열 롤백 그냥 JdbcTemplate을 아래에서 작동하지만 MyBatis로 아래 효능을 잃는 이유를 모르겠어요
. 테이블의 엔진은 InnoDB입니다. 제게 손을 쥐어 주시겠습니까? 거의 2 주 동안 저를 당황 시켰습니다. 나의 가난한 영어가 가져온 불편을 끼쳐 드려 죄송합니다. 이 같은
감사합니다. 'multipleDataSource'에 문제가있는 것 같습니다. 제 동료가 원인을 찾아 내서이 버그를 수정했습니다. 한 번에 @Transactional을 사용하려고하지만 내 코드 스타일은 다른 사람과 일치해야합니다. ' 어쨌든 고마워! – Merorin