问题描述
我有一个hibernate方法:publicvoidmethod(){for(inti=0;i<list1.size;i++){save(obj1);}for(intj=0;j<list2.size;j++){save(obj2);}for(intk=0;k<list3.size;k++){save(obj3);}}就是一个方法保存多个表的对象。但这样做会让有的对象可以保存成功。有的不能保存成功。想用一个事务的方法让方法中任何一个对象保存不成功整个方法回滚,不要让有的对象可以保存。有的不能保存。
解决方案
解决方案二:
如果你的循环没什么问题的话,直接开Session的事务就行了。publicvoidmethod(){//首先得到session,开启事务Transactiontr=session.getTransaction();tr.begin();for(inti=0;i<list1.size;i++){save(obj1);}for(intj=0;j<list2.size;j++){save(obj2);}for(intk=0;k<list3.size;k++){save(obj3);}//结束事务。tr.commit();}
解决方案三:
<beanid="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><propertyname="sessionFactory"><refbean="sessionFactory"/></property></bean><beanid="transactionProxy"lazy-init="true"class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"abstract="true"><propertyname="transactionManager"><refbean="transactionManager"/></property><propertyname="transactionAttributes"><props><propkey="find*">PROPAGATION_REQUIRED,readOnly</prop><propkey="*">PROPAGATION_REQUIRED</prop></props></property></bean>用配置管理