zoukankan      html  css  js  c++  java
  • @Transactional 无效原因

    在controller 上面使用  @Transactional 注解时候发现数据没有回滚,在执行完update 更新语句,事务直接就commit 了,

    此时方法尚未执行结束,数据库数据已经更新了。

    第一反应应该是配置文件有问题,自己检查了spring.xml 和spring-mvc.xml文件,配置文件没什么问题。

    在pring.mvc中  <tx:annotation-driven transaction-manager="transactionManager" />  也是有的

    并且自动扫描了 service 层文件。百思不得其解

    网上查询资料:导致该注解无效的原理多种多样,没有一种和我的是一样的。

    有的说spring.xml和spring-mvc.xml 两个配置文件都对controller 或者 service 层进行了扫描,出现扫描重复,这种情况会导致

    @Transactional 注解无效,但我的不属于这种情况,

    还有的说,在同一个类中 ,一个没有配置@Transactiona 注解的方法,调用了令一个配置了@Transactiona 注解的方法,导致该注解无效。

    我的也不属于这种情况。

    还有的说,方法修饰符没有用public。。

    这些都会导致该注解无效,但是我的不属于这些情况。

    偶然尝试,在sevice 层接口实现类上面,配置了 @Transactional  debug 调试发现,数据回滚了,注解起作用了。

    原来这个注解需要用在service 接口实现类 impl 中。

    后来查资料:

    若要@Transactional  注解配置了controller 层,需要将开启事务注解方式的 方式即:<tx:annotation-driven transaction-manager="transactionManager" /> 增加在spring-mvc.xml中

    尝试了一下,有效。

    
    
  • 相关阅读:
    MySQL-5.6.xx-winx64 免安装版配置方法
    winForm窗体最大化的设置
    foreach内部做的一点事
    sqlserver创建同义词
    sql server 数据库创建链接服务器
    文件比对工具——WinMerge
    Devos病毒解决办法(转)
    设计模式学习笔记-单例模式
    Aspose.Word for DotNet 定位到每页,画笔 移动到某页。
    Word 固定文字或签名在底部
  • 原文地址:https://www.cnblogs.com/prettrywork/p/9969849.html
Copyright © 2011-2022 走看看