+Exception的问题-前缀强制回滚,+前缀指定提交
你+的是Exception,意思应该是所有异常都不回滚,继续提交事务!
你+的是Exception,意思应该是所有异常都不回滚,继续提交事务!
解决方案 »
- HibernateTemplate 和 HibernateSessionFactory
- 如何由string类型的类名生成类的实例?
- 怎样用JAVA实现RSS功能?谢谢
- 关于ssh中HibernateDaoSupport的getSession是否自动关闭的问题
- 求助:关于actionform 是如何获得客户端页面提交的数据?
- tomcat到底怎么了??
- 求助:特殊字符处理问题
- JBPM5流程图求指导,高分送上
- 高手们。。请问我用session保存了一个值。在页面中可以得到,但是我想在后台处理业务逻辑的BEAN里面得到这个值。怎么办?
- struts中如何运用checkbox
- 求java 的广度优先和深度优先的算法及例子
- 调用webservice问题
<tx:annotation-driven transaction-manager="txManager"/>
<bean id="service" parent="proxyTemplate">
<property name="target">
<ref local="hstudao" />
</property>
这个给hstudao添加事务,和你帖出来dao.java有关系没?
这个+三楼给出了解释
<prop key="save*">PROPAGATION_REQUIRED,+Exception </prop>
把+Exception改成-Exception或删掉!因为Spring默认只回滚uncheck Exception,你的方法没有throws任何Exception,所以有异常的话只能是uncheck Exception你的配制文件有点乱,而且命名也有些问题。
如果成功不了,把你的所有相关文件帖出来看看!
好像在哪见过什么第二类事务回滚...
The final facet of the transaction pentagon is a set of rules that define what exceptions
prompt a rollback and which ones do not. By default, transactions are rolled
back only on runtime exceptions and not on checked exceptions. (This behavior
is consistent with rollback behavior in EJBs.)
但是用spring的代理
<bean id="proxyTemplate" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" >
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="insertSchool">PROPAGATION_REQUIRED</prop>
<prop key="insertTeacher">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
<prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
<property name="target">
<ref local="hstudao"/>
</property>
</bean>
<bean id="hstudao" class="com.ydx.stu.HstuDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>做了很多次都不达到控制insertSchool这个插入的事务;不知道在哪个地方还有问题?????
Hibernate: insert into school (s_id, s_name, id) values (?, ?, ?)
Hibernate: insert into teacher (t_name, t_s_id, t_id) values (?, ?, ?)
2008-10-24 13:31:01,406 WARN [main] util.JDBCExceptionReporter (JDBCExceptionReporter:71) - SQL Error: 1062, SQLState: 23000
2008-10-24 13:31:01,406 ERROR [main] util.JDBCExceptionReporter (JDBCExceptionReporter:72) - Duplicate entry 'T1009' for key 1
2008-10-24 13:31:01,406 ERROR [main] def.AbstractFlushingEventListener (AbstractFlushingEventListener:299) - Could not synchronize database state with session
以上各位所说的方法都用过了,-Exception拉,service拉,还是不行,
各位大侠帮看看怎么处理啊??或者帮up的都有分...........
不知道hibernate对级联的语句是在何时产生的,这个是问题的关键。
AOP拦截诸如save方法增加事务,其实是在方法调用前增加事务开始,调用后增加commit,出现异常则rollback。
但遇到级联处理是单独在save方法完全执行完毕后才执行生成的语句,那么,在save方法已经成功执行后,就已经执行了commit,无论后面的语句发生了什么,都与这个语句无关了。
所以,那个配置只是针对某一个方法单独的事务,而hibernate应该是在save方法后增加的语句,所以AOP事务管理也控制不到了。
我也是初学者,这些只是我的一些浅见,希望能提供些线索。