用spring进行事务管理,现在要执行数据保存的操作,要同时向两个表保存,一个主表一个从表,已经用hibernate关联了起来,session.save(kpgl)是一起向两个表进行存储的,数据库存储数据的时候,从表保存出现错误,主表依然存入了数据,事务并没有回滚。下面是代码和配置
@Override
public void save(List<KPGL> pKpglList, Result pResult) throws Exception {
Session session = null;
try {
session = this.getSessionFactory().openSession();
for(KPGL kpgl: pKpglList) {
session.save(kpgl);
}
}
catch(Exception e) {
this.log.info(e.getMessage(), e);
pResult.setCode(_mDbErrorCode);
pResult.setMessage(_mDbErrorMess);
throw e;
}
finally {
if(session != null) {
session.close();
}
}
}
配置事务管理
<!-- 事务管理 -->
<tx:advice id="txAdviceDao" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save" propagation="REQUIRED" read-only="false" rollback-for="Exception"/>
<tx:method name="update" propagation="REQUIRED" read-only="false" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="myPointcutDao" expression="execution(* com.aisino.dao.impl.*.*(..))"/>
<aop:advisor advice-ref="txAdviceDao" pointcut-ref="myPointcutDao"/>
</aop:config>