是的用了,测试2
getHibernateTemplate().saveOrUpdate(manager); 1
managerIdc.setMAccount("iiiiiiiiuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu"); 2
getHibernateTemplate().saveOrUpdate(managerIdc); 3
出现回滚,第一行没有插入数据库
getHibernateTemplate().saveOrUpdate(manager); 1
managerIdc.setMAccount("iiiiiiiiuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu"); 2
getHibernateTemplate().saveOrUpdate(managerIdc); 3
出现回滚,第一行没有插入数据库
测试方式1:
代码和数据都没错,调用你dao的方法并没有出错,而是你这个方法调用结束后,程序其他地方报错了。所以事务是有效的。
例子代码:
void fun(){
Object obj = new Object();
dao.saveOrUpdate(obj); //事务只对这里有作用
throw Exception("测试"); //这里报错
}测试方法2:
要保存的对象数据类型不对了,所以调用dao的方法时出错,事务回滚了。
例子代码:
void fun(){
Object obj = new Object();
obj.setAttribute("xxx");
dao.saveOrUpdate(obj); //事务只对这里有作用,这里报错,所以事务回滚
}至少我是觉得可能导致你错误的原因在这里。
这样的错误的原因很可能是因为你配置事务的xml文件不正确。象上面说的,要看你配置文件也许才能知道。
第一种情况抛出除零的错误,没有捕获到数据库异常所以没有回滚
用DataAccessException测试1、测试2都能正常回滚。