我使用ssh框架开发Web应用程序。
有一个我的交易的例子。
@Transactional
public StudentEntity addStudent(StudentEntity studentEntity) {
return studentDAO.save(studentEntity);
}
现在,我想在异常被抛出然后事务回滚时返回null 。
答案 0 :(得分:1)
一般情况下,建议不要返回null
。
如果您预期逻辑中有任何Exception
,则应通过throws
子句通知调用者,以便他们为此类情况做好准备。
关于回滚,您应该考虑以下更新@Transactional
注释
@Transactional(rollbackFor=Exception.class)
请注意,这会在抛出任何异常后回滚事务。
答案 1 :(得分:0)
要以编程方式回滚事务,请查看TransactionAspectSupport
类。
@Transactional
public StudentEntity addStudent(StudentEntity studentEntity) {
try {
return studentDAO.save(studentEntity);
}
catch(Exception ex) {
//set transaction for rollback.
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
}
你可以用声明的方式做到
@Transactional(rollbackFor={SomeSpecificException.class, SomeOtherSpecificException.class})