如何解决注释@Transactional如何回滚??
需RuntimeException从标记为的方法中抛出任何内容即可@Transactional。
默认情况下,所有RuntimeExceptions都回滚事务,而检查的异常则不。这是EJB的遗留物。你可以使用rollbackFor()和norollbackFor()注释参数进行配置:
@Transactional(rollbackFor=Exception.class)
抛出任何异常后,这将回滚事务。
解决方法
我已成功将此注释用于Dao类。回滚适用于测试。
但是现在我需要回滚真实代码,而不仅仅是测试。有用于测试的特殊注释。但是哪些注释适用于非测试代码?对我来说这是一个大问题。我已经花了一天的时间。官方文档不符合我的需求。
class MyClass { // this does not make rollback! And record appears in DB.
EmployeeDaoInterface employeeDao;
public MyClass() {
ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "HibernateDaoBeans.xml" });
employeeDao = (IEmployeeDao) context.getBean("employeeDao");
}
@Transactional(rollbackFor={Exception.c