spring事务不起作用

问题描述

我估计让程序报错但是数据没有回滚,是为什么,配置事务的成功例子我都有,网上的解答我基本都看过了,但是还是解决不了,拿出来跟大家分享一下,看大家能解决么??这是service里的publicvoidmodifyRoleMenus(Stringid,Stringmenuids)throwsException{if(null!=id&&menuids!=null){Queryquery=cashFlowDao.session().createSQLQuery("deletefromRESOURSE_ROLErrwhererr.roleid=?");query.setString(0,id);query.executeUpdate();inta=1/0;String[]mids=menuids.split(",");//选中一个菜单时至少带着父节点for(inti=0;i<mids.length;i++){if(!"".equals(mids[i])){ResourceRolerr=newResourceRole();rr.setRoleid(id);rr.setZyid(mids[i]);cashFlowDao.save(rr);}}}}这是basedao里的publicSessionsession(){Sessionsession=super.getHibernateTemplate().getSessionFactory().openSession();returnsession;}<beanid="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><propertyname="sessionFactory"ref="sessionFactory"/></bean><tx:adviceid="txAdvice"transaction-manager="transactionManager"><tx:attributes><!--得到数据--><tx:methodname="find*"propagation="REQUIRED"read-only="true"/><tx:methodname="get*"propagation="REQUIRED"read-only="true"/><!--创建数据--><tx:methodname="create*"propagation="REQUIRED"rollback-for="Exception"/><tx:methodname="add*"propagation="REQUIRED"rollback-for="Exception"/><!--更新数据--><tx:methodname="update*"propagation="REQUIRED"rollback-for="Exception"/><tx:methodname="change*"propagation="REQUIRED"rollback-for="Exception"/><!--保存操作,可能涉及到数量的数据变化--><tx:methodname="save*"propagation="REQUIRED"rollback-for="Exception"/><tx:methodname="insert*"propagation="REQUIRED"rollback-for="Exception"/><tx:methodname="modify*"propagation="REQUIRED"rollback-for="Exception"/></tx:attributes></tx:advice><aop:configproxy-target-class="true"><!--@expression="execution(*包名..*(..))"--><aop:pointcutid="allManagerMethod"expression="execution(*qingfu.financing.service.*.*(..))"/><aop:advisoradvice-ref="txAdvice"pointcut-ref="allManagerMethod"/><!--<aop:advisoradvice-ref="theBeforeAdvice"pointcut-ref="allManagerMethod"/>--></aop:config><!--注意下面的配置--><aop:aspectj-autoproxyproxy-target-class="true"/>

解决方案

解决方案二:
打开LOG4J的DEBUG功能,看看到底有没有为这个方法开启事务吧。
解决方案三:
这样配置貌似没啥问题。。。
解决方案四:
publicSessionsession(){Sessionsession=super.getHibernateTemplate().getSessionFactory().openSession();returnsession;}

这里不应该是openSession(),应该是getCurrentSession(),直接openSession就跟spring事务控制没啥关系了。
解决方案五:
···你都用了声明式事物为什么还要自己创建事物啊

时间: 2024-11-02 23:16:41

spring事务不起作用的相关文章

spring+mybatis,事务不起作用,求帮忙

问题描述 spring+mybatis,事务不起作用,求帮忙 spring + mybatis,开始annotation式事务 配置如下: <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="data

mybatis spring 整合 junit测试。 事务不起作用,不提交。删除无效???

问题描述 mybatis spring 整合 junit测试. 事务不起作用,不提交.删除无效??? applicationContext.xml 中的数据库和 sessionFactory以及事务配置 Xml代码 <bean id="bssDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <!-- Connec

spring 3 ibatis 事务不起作用

问题描述 controller层调用service@RequestMapping("/test.html")publicStringtest(ModelMapmap){testService.t();//调用servicereturnTemplateKeys.INDEX;}/////////////serviceDevicedevice=newDevice();device.setDeviceDesc("test");d.saveOrUpdate(device);f

spring事务-spring AOP 拦截器方式配置事务失效

问题描述 spring AOP 拦截器方式配置事务失效 Spring.xml配置如下 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:conte

hibernate-spring-data-jpa事务不起作用

问题描述 spring-data-jpa事务不起作用 10C spring-data-jpa中的repository事务没有问题,但是在Service中添加Transactional注解事务就不起作用,中间有异常不能回滚,spring的配置如下 <?xml version=""1.0"" encoding=""UTF-8""?><beans xmlns=""http://www.sprin

spring 事务管理让我费解的地方

问题描述 在用springmvc时,用到了spring事务管理<beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><propertyname="driverClassName"><value>${jdbc.driver}</value></prop

spring 事务管理的问题

问题描述 各位大牛:spring事务处理的相关~~publicStringsaveSystem(Systemsystem){try{Systemtest=newSystem();test.setId("2");test.setName("2222");test.setDescription("fortest");this.addSystem(test);inti=9/0;this.addSystem(test);}catch(RuntimeExc

Spring事务讲解示例(转)

  Spring 事务Transaction1.事务的属性1.1 事务隔离IsolationLevel1.2 事务传播PropagationBehavior1.3 事务超时Timeout1.4 只读状态ReadOnly隔离级别.超时.只读状态都依赖于底层的数据库实现,Spring仅仅起了代理作用(MySQL的MyISAM引擎是无事务引擎,那么Spring是不可能带有事务管理功能的).事务传播行为是Spring框架所特有的.2 使用Spring事务只需要了解PlatformTransactionM

Spring事务超时时间可能存在的错误认识

1.先看代码 1.1.spring-config.xml Java代码   <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">       <property name="driverClassName" value="com.mysql.jdbc.Driver"/>