在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中

尝试了一下,有效。

												

@Transactional 无效原因的更多相关文章

  1. spring redis @Cacheable注解使用部分错误及无效原因

    spring redis @Cacheable注解使用部分错误及无效原因 说明:     spring项目用到redis注解无效,解决问题中遇到一堆BUG,各种搜索,看了许多错误解决方案一一测试,对于 ...

  2. Oracle Index 索引无效原因

    索引无效原因 最近遇到一个SQL语句的性能问题,修改功能之前的运行时间平均为0.3s,可是添加新功能后,时间达到了4~5s.虽然几张表的数据量都比较大(都在百万级以上),但是也都有正确创建索引,不知道 ...

  3. Spring 下默认事务机制中@Transactional 无效的原因

    Spring中 @Transactional 注解的限制1. 同一个类中, 一个nan-transactional的方法去调用transactional的方法, 事务会失效 If you use (d ...

  4. Spring @Transactional事物配置无效原因

    spring @transaction不起作用,Spring事物注意事项 1. 在需要事务管理的地方加@Transactional 注解.@Transactional 注解可以被应用于接口定义和接口方 ...

  5. div层调整zindex属性无效原因分析及解决方法

    在做的过程中,发现了一个很简单却又很多人应该碰到的问题,设置Z-INDEX属性无效.在CSS中,只能通过代码改变层级,这个属性就是z- index,要让z-index起作用有个小小前提,就是元素的po ...

  6. 【转载】div层调整zindex属性无效原因分析及解决方法

    在做的过程中,发现了一个很简单却又很多人应该碰到的问题,设置Z-INDEX属性无效.在CSS中,只能通过代码改变层级,这个属性就是z-index,要让z-index起作用有个小小前提,就是元素的pos ...

  7. springmvc的controller中使用@Transactional无效

    最近看mybatis的时候做了一个练习,但是进行事务处理的时候出了问题,如下 package com.henu.lz.controller; import org.springframework.be ...

  8. 【Web前端】div层调整zindex属性无效原因分析及解决方法

    在做的过程中,发现了一个很简单却又很多人应该碰到的问题,设置Z-INDEX属性无效.在CSS中,只能通过代码改变层级,这个属性就是z- index,要让z-index起作用有个小小前提,就是元素的po ...

  9. [项目总结]论Android Adapter notifyDataSetChanged与notifyDataSetInvalidated无效原因

    最近在开发中遇到一个问题,Adapter中使用notifyDataSetChanged 与notifyDataSetInvalidated无效,经过思考和网上查找,得出如下原因. 首先看一下notif ...

随机推荐

  1. golang lua使用示例

    package main import ( "fmt" "github.com/yuin/gopher-lua" ) func hello(L *lua.LSt ...

  2. RPC----Hadoop核心协议

    什么是RPC RPC设计的目的 RPC的作用 远程过程调用(RPC)是一个协议,程序可以使用这个协议请求网络中另一台计算机上某程序的服务而不需要知道网络细节. 必备知识: 网络七层模型 网络四层模型 ...

  3. Kubernetes — 作业副本与水平扩展

    Deployment 看似简单,但实际上,它实现了 Kubernetes 项目中一个非常重要的功能:Pod 的“水平扩展 / 收缩”(horizontal scaling out/in). 这个功能, ...

  4. Shell命令-文件及目录操作之ls、cd

    文件及目录操作 - ls.cd 1.ls:列出目录的内容及其内容属性信息 ls命令的功能说明 ls命令用于列出目录的内容及其内容属性信息. ls命令的语法格式 ls [OPTION]... [FILE ...

  5. Lodop、c-lodop注册与角色简短问答

    注册与角色:参考http://www.c-lodop.com/demolist/t1.html参考链接里的三种场景,是哪种角色.客户端访问网站后用自己的打印机打印.是客户端本地打印角色.IP和域名注册 ...

  6. 【XSY2903】B 莫比乌斯反演

    题目描述 有一个\(n\times n\)的网格,除了左下角的格子外每个格子的中心里都有一个圆,每个圆的半径为\(R\),问你在左下角的格子的中心能看到多少个圆. \(n\leq {10}^9,R_0 ...

  7. 帝国cms更新报错解决办法

    帝国cms更新,经常会报以下的错误: PHP Warning:  array_merge(): Argument #2 is not an array in D:\wwwroot\www.536831 ...

  8. [SHOI2014]三叉神经树

    题目描述 计算神经学作为新兴的交叉学科近些年来一直是学术界的热点.一种叫做SHOI 的神经组织因为其和近日发现的化合物 SHTSC 的密切联系引起了人们的极大关注. SHOI 组织由若干个 SHOI ...

  9. java实现sftp客户端上传文件夹的功能

    使用的jar: <dependencies> <dependency> <groupId>jsch</groupId> <artifactId&g ...

  10. redis jedis使用

    jedis就是集成了redis的一些命令操作,封装了redis的java客户端.提供了连接池管理.一般不直接使用jedis,而是在其上再封装一层,作为业务的使用.如果用spring的话,可以看看spr ...