请教:spring事务不起作用

java代码中,连续几个insert,其中一个是会抛异常的。但是发现前面的insert已经在数据库中生效了,并不回滚.数据库是mysql和oracle

放在javaeye的问题频道好几天了,都没得到正确答案:http://www.iteye.com/problems/6314

只好跑到论坛来了:(


问题补充
我试过了,也不行哦:(

从日志中看得出来,事务根本就没启动

Fetching JDBC Connection from DataSource

Creating new JDBC DriverManager Connection to [jdbc:oracle:thin:jdf30/1@192.168.103.236:1521:jstrd236]

Obtained JDBC Connection [oracle.jdbc.driver.T4CConnection@109ea96] for iBATIS operation

Returning JDBC Connection to DataSource

Opened SqlMapSession [com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl@1e12f6d] for iBATIS operation





Fetching JDBC Connection from DataSource

Creating new JDBC DriverManager Connection to [jdbc:oracle:thin:jdf30/1@192.168.103.236:1521:jstrd236]

Obtained JDBC Connection [oracle.jdbc.driver.T4CConnection@46d228] for iBATIS operation

Returning JDBC Connection to DataSource



这段日志显示出根本没有事务控制,每次都是取一个connection然后放回去,再操作再取.郁闷... ...



repsihWDX 写道
我答了个你看看是不是吧。




问题补充
已经解决,谢谢各位的参于:)


expression貌似应该写到类的上级目录 你这里没有写到

是不是事务层搞错了

我答了个你看看是不是吧。

http://www.iteye.com/topic/11738

spring的声明式事务,可以在业务层统一的对事务进行管理,在spring的配置文件这样子的配置,我这里的业务层为com.services。
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
value="classpath:hibernate.cfg.xml">




<!-- 事务属性:通知/处理/横切关注点 
 <tx:method name="add*"    propagation="REQUIRED"     isolation="DEFAULT" />
                  以add开头  事务传播属性(没有事务就创建)  事务隔离级别(数据库默认)
-->
<tx:advice id="mytx">
     <tx:attributes>
         <tx:method name="add*"    propagation="REQUIRED" />
         <tx:method name="del*"    propagation="REQUIRED" />
         <tx:method name="update*" propagation="REQUIRED" isolation="DEFAULT"/>
         <tx:method name="*"       propagation="SUPPORTS" read-only="true"/>
     </tx:attributes>
</tx:advice>

<!-- 织入 -->
<aop:config>
   <aop:advisor advice-ref="mytx" pointcut="execution(* com.services.*.*(..) )"/>
</aop:config>