從我的DAO方法中,我需要返回結果(即使發生異常)。我試圖以這樣的方式來做到這一點,它在異常情況下不起作用(我有個例外:don't flush the Session after an exception occurs
)。DAO方法中的事務回滾
@Repository
@Transactional(rollbackFor=HibernateException.class)
public class UserDAO {
@Override
public boolean save(Proxy proxy) {
try{
sessionFactory.getCurrentSession().save(proxy);
}
catch(HibernateException e){
//TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return false;
}
return true;
}
}
然而,當我取消//TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
所有作品像我期望的那樣。我知道文檔不建議使用這種方法,但註釋回滾不適用於我。你能解釋一下,爲什麼?如果可能,我可以修改代碼以使其工作嗎?