2 lichina000 lichina000 于 2017.01.13 12:24 提问

mybatis+spring的事务@Transactional的NOT_SUPPORTED无效

method1方法有事务,method2不需要事务(设置为NOT_SUPPORTED),但是在执行的时候method2还是用到了事务。 求大神指导,,

    @Transactional
    public void method1(HtYbnsrDab htYbnsrDab) {
        // .....业务逻辑
        method2();
    }

    @Transactional(propagation = Propagation.NOT_SUPPORTED)
    public void method2(HtYbnsrDab htYbnsrDab) {
        // .....业务逻辑
    }

使用的是jta事务,web容器是weblogic,spring配置如下:

     <jee:jndi-lookup id="htssDS" jndi-name="htssDS"/>

    <tx:jta-transaction-manager/>

    <tx:annotation-driven proxy-target-class="true"/>

1个回答

zhangpan_soft
zhangpan_soft   Rxr 2017.01.13 20:33

不需要事务的话设置@Transaction(readOnly = true, propagation = Propagation.SUPPORTS) ,注意,是SUPPORS,意思是如果外面有事务,支持事务,如果外面没有事务,则不开启事务,
对于事务还有如下几个值:默认值:required,意思是如果外面没有事务则开启事务,如果外面有事务则融入到外面的事务中
requires_new, 意思是,如果外面没有事务,开启新的事务,如果外面有事务,挂起外部事务,开启新的事务,等此事务走完再走外部事务
掌握这3个基本可以应对一切业务问题

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
spring事务定义中,@Transactional(readOnly = true, propagation = Propagation.NOT_SUPPORTED) 这样定义有问题吗?
spring事务定义中,@Transactional(readOnly = true, propagation = Propagation.NOT_SUPPORTED) 这样定义有问题吗? ekisstherain 0 票 1 我想知道在使用事务的情况下,我在方法使用注解定义事务,但是我定义一个只读属性和一
脱离 Spring 实现复杂嵌套事务,之六(NOT_SUPPORTED - 非事务方式)
PROPAGATION_NOT_SUPPORTED (非事务方式) 定义:     是指如果存在事务则将这个事务挂起,并使用新的数据库连接。新的数据库连接不使用事务。 解释:     NOT_SUPPORTED 行为是 Spring 为我们带来的一种特殊的事务控制行为。在这种行为下它保证了当前对数据库的操作是相当于 autoCommit 值为 true 。     我们回顾第
Spring @Transactional事物配置无效原因
Spring @transaction不起作用,Spring事物注意事项 1. 在需要事务管理的地方加@Transactional 注解。@Transactional 注解可以被应用于接口定义和接口方法、类定义和类的 public 方法上 。 2. @Transactional 注解只能应用到 public 可见度的方法上 。 如果你在 protected、private 或者 p
Spring MVC @Transactional注解方式事务无效的解决方法
首先看了配置文件关于事务管理都没有问题,然后在service的实现业务类方法加上@Transactional注解,发现 事务没有生效,正常情况下应该会有数据库回滚操作。 配置文件: web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan
(MySQL)Spring3+Mybatis3使用注解式事务声明(@Transactional)无法回滚
按以下步骤进行检查: 1、检查下Spring3配置没问题(略); 2、检查Log4J日志输出,确实有进行事务回滚动作; 3、检查下MySQL后台日志输入,确实有进行“rollback”操作; 上网查找一番,终于找到解决方法!原来执行事务回滚的表默认“表类型=MyISAM“(网上说:MyISAM不支持事务!这个我不太清楚) 使用如下语句更改表类型为”InnoDB“: alter tabl
Spring事务 REQUIRES_NEW、NESTED与NOT_SUPPORTED
手动创建一个异常,用来探究Spring事务处理机制。 transactionManager为DataSourceTransactionManager。 本次暂不讨论JTA <tx:jta-transaction-manager/> ,由于公司项目历史原因,不想在项目中使用Jta。 <bean id="transactionManager" class="org.springframewor
springboot的事物处理@Transactional不起作用
表类型是MyISAM,是非事务安全的,所以无法实现数据回滚。 只有表的类型是Innodb,才可以进行对事物的回滚。spring boot配置application.yml文件修改 jpa: hibernate: ddl-auto: update show-sql: true properties: hibernate: dialec...
@Transactional事务不起作用的解决
 问题 环境
[spring,mysql] spring使用注解式事务声明(@Transactional)无法回滚
@Transactional事务回滚 在service类前加上@Transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。 Spring默认情况下会对运行期例外(RunTimeException)进行事务回滚。这个例外是unchecked 如果遇到checked意外就不回滚。 如何改变默认规则: 1 让checked
java-mybatis、springmvc 整合,使用 @Transactional 时遇到的事务相关问题
java-mybatis、springmvc 整合,使用 @Transactional 时遇到的事务相关问题 目标:用最简单的配置,使用 spring @Transactional 注解管理事务 一、问题及解决方案 问题1:配置错误 描述:已经使用 @Transactional 注解,但是在 mybatis 的 sql track 检测到,“Closing non tran