Hibernate 嵌套事务,大神请进!
Hibernate、Spring整合,使用HibernateTransactionManager事务管理器,在使用nested嵌套事务的时候,子事务出错时回滚到savepoint,但是Hibernate并没有把出错的操作移除,导致主事务提交的时候session flush又报错,最终主事务和子事务都回滚了。
环境:Spring3.0.2,Hibernate3.6.0,Mysql5.6;
异常是null id in Album entry (don't flush the Session after an exception occurs)【这个是我自己让它报错的,数据库非空校验不过】,
并不是Transaction rolled back because it has been marked as rollback-only。
代码逻辑大致如下:
环境:Spring3.0.2,Hibernate3.6.0,Mysql5.6;
异常是null id in Album entry (don't flush the Session after an exception occurs)【这个是我自己让它报错的,数据库非空校验不过】,
并不是Transaction rolled back because it has been marked as rollback-only。
代码逻辑大致如下:
ServiceA {
@Transactional(propagation = Propagation.NESTED)
@Override
public void error() throws Exception {
A a = new A();
aDao.save(a);
}
}
ServiceB {
@Transactional(propagation = Propagation.REQUIRED)
@Override
public void success() throws Exception {
B b = new B();
b.setName("456");
bDao.save(b);
try {
aService.error();
} catch (Exception e) {
// 这里调用的是ServiceA的error,这是不是Dao,目的用于测试嵌套事务。
}
}
}
...全文
相关推荐
Hibernate3事务管理[借鉴].pdf
`PROPAGATION_NESTED`会在已有的事务中创建嵌套事务,没有事务则按`PROPAGATION_REQUIRED`处理。
hibernate权威整理文档!
【hibernate权威整理文档!】一、Hibernate简介Hibernate是一个强大的ORM(Object-Relational Mapping)框架,它致力于简化Java应用程序的持久层开发。
Hibernate所需要的所有jar包!
在Java项目中,为了使用Hibernate框架,我们需要引入一系列的jar包,这些jar包提供了Hibernate的核心功能以及其依赖的其他库,例如数据库驱动、日志工具等。
hibernate 资料hibernate 资料hibernate 资料
> <!
Hibernate几种连接池的比较
--启用Proxool连接池--> <property name="proxool.hibernate.sql.log">false</property> <!


