@Transactional事务不起作用的解决

Java注解@Transactional事务类内调用不生效问题及解决办法 主要介绍了Java注解@Transactional事务类内调用不生效问题及解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 立即下载
问题

        使用spring的配置事物注解@Transactional,在测试的时候发现不起作用。

配置文件
    <bean id="tmallPriceDataSource" class="org.apache.commons.dbcp.BasicDataSource"  
        destroy-method="close">  
        <property name="driverClassName" value="${tmall_price_jdbc.driver}" />  
        <property name="url" value="${tmall_price_jdbc.url}" />  
        <property name="username" value="${tmall_price_jdbc.username}" />  
        <property name="password" value="${tmall_price_jdbc.password}" />  
        <property name="initialSize" value="${tmall_price_jdbc.initialSize}" />  
        <property name="maxActive" value="${tmall_price_jdbc.maxActive}" />  
        <property name="maxIdle" value="${tmall_price_jdbc.maxIdle}" />  
        <property name="maxWait" value="${tmall_price_jdbc.maxWait}" />  
        <property name="defaultAutoCommit" value="${tmall_price_jdbc.defaultAutoCommit}" />  
    </bean>  
      
    <bean id="tmallPriceSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
        <property name="configLocation" value="classpath:mybatis/mybatis-tmallPrice-config.xml" />  
        <property name="dataSource" ref="tmallPriceDataSource" />  
    </bean>  
      
    <bean id="tmallPriceSqlSession" class="org.mybatis.spring.SqlSessionTemplate">  
        <constructor-arg index="0" ref="tmallPriceSqlSessionFactory" />  
    </bean>  
      
    <bean id="tmallPriceTxManager"  
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
        <property name="dataSource" ref="tmallPriceDataSource" />  
    </bean>  
      
    <tx:annotation-driven proxy-target-class="true" transaction-manager="tmallPriceTxManager" />  

Java代码

    @Transactional(value="tmallPriceTxManager",rollbackFor=java.lang.Exception.class)  
    public void savetmallDto(List<tmallDto> dtoList, String classId) {  
          
    }  

原因

        数据库使用的存储引擎是MyISam,MyISam不支持事物,应该用InnoDB引擎
TIPS

        @Transactional注解事务不起作用的解决
         可能的原因:
        1.数据库引擎要支持事务
        如果是mysql,注意表要使用支持事务的引擎,比如innodb,如果是myisam,事务是不起作用的

        2.是否开启了对注解的解析
        配置文件必须加<tx:annotation-driven />,否则不解析@Transactional
        
        3.是的是独立的类和方法
        因为使用代理,如果同一个类业务方法(A)直接调用带有事务的方法(B),这时方法(B)的事务不起作用。需要把方法(B)独立成一个类,这样spring会自动生成代理类,才能支持事务


2021哈工大网安837考研初试经验贴 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar 阅读详情

相关推荐

基于IC617下Layout XL的使用

基于IC617下Layout XL的使用

weixin_43816759的博客 1万+

事务注解 @Transactional 失效的3种场景及解决办法

点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!每天14:00更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2021超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库中间件 Sharding-JDBC 和 MyCAT 源码解析...

weixin_44421461的博客 1675

家长必看!用RouterOS轻松屏蔽不良网站,保护孩子上网安全

本文为家长提供了一份详细的RouterOS路由器配置指南,旨在通过技术手段保护儿童上网安全。文章核心介绍了如何利用RouterOS的DNS静态条目功能,轻松实现禁止访问特定不良网站,并结合防火墙时间规则,为孩子构建一个纯净、可控的家庭网络环境,操作简单,无需专业背景。

weixin_28363123的博客 1266

面试官:Spring@Transactional注解在什么情况下事务不生效?

那么其实我们也可以知道,如果save7和sav72上面都有@Transactional注解的话,事务最终会回滚,并不是因为save72上面的注解生效了,而是因为save7上面的注解生效了,save72回滚只不过是因为被包在了save7的事务里面,是在整个大事务里面回滚的。标注了@Transactional的方法A的propagation配置成了REQUIRE,标注了@Transactional的方法B的propagation配置成了REQUIRE_NEW,方法A调用了方法B。

代码界的扛把子 316

道家学派创始人老子,对 SAP ABAP 这门编程语言的客观评价

SAP HANA 之引入,使 ABAP 于处理大数据,云计算等新兴领域,展现新的生命力,如老吾老以及人之老,幼吾幼以及人之幼,扩展其在信息技术领域的应用,以涵养更广之需。ABAP 能以数据为基,流转于系统之中,如道法自然,顺应企业之生态,助之以高效运转,减少冗杂,简化管理,使企之运营,如小国寡民,无为而治。然 ABAP 如老树盘根,更替不易,面对新兴技术,如云计算、大数据等,其更新之速,未能与时俱进。如水之于渊,柔而能胜刚,ABAP 之发展,顺时而动,应需而变,其在编程领域,犹如道之于万物,渐不可或缺矣。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1021

手把手教你学Simulink--复杂环境适应的四足机器人领域仿真建模实例:构建一个基于Simulink的四足机器人动态平衡保持仿真模型

通过上述步骤,你可以构建一个基本的基于Simulink的四足机器人动态平衡保持仿真模型。此模型不仅有助于理解四足机器人在复杂环境中的动态平衡控制原理,也为进一步优化提供了基础。随着技术的发展,还可以探索更多高级功能,如自适应步态调整、强化学习等,以提高机器人的智能性和适应性。

MHD0815的博客 235

事务注解@Transactional失效的3种场景及解决办法

Transactional失效场景介绍 第一种失效场景 Transactional注解标注方法修饰符为非public时,@Transactional注解将会不起作用。例如代码如下: 定义一个错误的@Transactional标注实现,修饰一个默认访问符的方法 @Component public class TestServiceImpl { @Resource TestMapper testMapper; @Transactional void insertTestWron

qq_46387088的博客 1764

磁环电感参数计算

电感饱和是指当电感中的电流超过一定阈值时,电感中的磁场无法继续增加,而是达到一个饱和状态,导致电感的感应电动势减小或消失。电感通常由线圈组成,当通过线圈的电流不断增加时,线圈内部的磁场也随之增加。然而,当电流达到一定程度时,线圈的铁芯磁化达到饱和,无法进一步增加磁场强度。电感饱和的阈值取决于电感的结构、材料和尺寸等因素。通常情况下,电感的额定电流会标明其饱和电流值。一旦电感中的电流超过了饱和电流,电感将饱和并出现异常行为。当我们谈论电感饱和的时候,实际上是在谈论磁芯饱和——空心的电感永远不会饱和。

小幽余生不加糖 4029

面试官问:注解@Transactional失效的几种原因及解决办法?

Transactional失效场景介绍第一种Transactional注解标注方法修饰符为非public时,@Transactional注解将会不起作用。例如以下代码。定义一个错误的@Transactional标注实现,修饰一个默认访问符的方法/** *@authorzhoujy **/ @Component publicclassTestServiceImpl{...

Java精选 1194

嵌入式工程师成长之路(10)——项目举例

送给大学毕业后找不到奋斗方向的你(每周不定时更新)

云轩阁 5万+

运放单电源供电和双电源供电的实际应用案例

文章摘要:本文对比分析了运放单电源与双电源供电的典型应用场景及电路设计要点。单电源供电适用于低成本、小体积设备,如便携音箱(5V供电+中点偏置)、工业4-20mA信号转换(12V供电+电压跟随)和物联网传感器(3.3V低功耗设计);双电源供电则适合高精度要求场景,如Hi-Fi音响(±15V对称输出)、医疗设备(±5V微弱信号放大)和精密仪器(±15V宽动态范围)。文末提供常见运放选型对照表,涵盖LM324、TL082等型号的供电参数与核心特性,为不同应用场景提供选型参考。(149字)

qq_37999850的博客 608

为啥添加了@Transactional注解事务还是不生效,一篇文章带你彻底理解

/ 抛出 MyException,不回滚。

2301_81230656的博客 967

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

springBoot service 事务注解@Transactional不起作用的解决

在springBoot使用事物时,发现事务并没有正常执行,没有进行回滚 @Transactional public void add(String companyName,String name) throws MyException{ companyDao.add(companyName); try { userDao.addUser(name)

BestLovelyMin的博客 2万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

@Transactional注解事务不起作用的解决

可能的原因: 1.数据库引擎要支持事务 如果是mysql,注意表要使用支持事务的引擎,比如innodb,如果是myisam,事务是不起作用的 2.是否开启了对注解的解析 配置文件必须加,否则不解析@Transactional...

flysnowxf技术博客 540

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

springBoot service 事务注解@Transactional不起作用的解决

在springBoot使用事物时,发现事务并没有正常执行,没有进行回滚 @Transactional public void add(String companyName,String name) throws MyException{ companyDao.add(companyName); try { userDao.addUser(name); }catch (DuplicateKeyException e){//这里在数据库将name设

Ark方舟 1292

关于使用@Transactional注解后事务不起作用,已解决

1、首先检查xml文件是否开启了事务配置 <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"></tx:annotation-driven> 2、该注解只能用于public定义的方法 3、检查使用注解时是否有使用其他注解而被覆盖了 4、用于开启事务的数据库表是否支持事务,本人出问题就是因为使用的数据库表在创建时没有设置,才搞了这次乌龙,开启事务可用 ALTE

单俞浩的博客 710

spring @Transactional 方法内事务不起作用的解决办法

class ManagerImpl implements Manager { @Override public void Method(){ updateAndDelete() } public void updateBankCardBalance(){ dao.update(); dao.insert(); } } 需求:只有updateAnd

JACKhao的专栏 5029

spring调用内中@Transactional方法事务不起作用的解决方法

@Service public class GirlService { @Autowired private GirlDao girlDao; @Transactional public void insertTwo(){ addTwo(); } @Transactional public void addTwo(...

x386277405的专栏 3501

java异常-事务异常-java学习-try catch时,@Transactional注解 事务回滚不起作用的解决

  解决1、在catch的时候 自定义抛出了异常。然后就可能会这样。把抛出的异常改为RuntimeException。 解决2、加参数 @Transactional(rollbackFor=Exception.class) 参考https://blog.youkuaiyun.com/paul342/article/details/52330609...

阿泷的学习日志 3330

在使用spring mvc时,我使用了@Service这样的注解, 发现使用注解@Transactional声明的事务不起作用

问题出现的场景: 在使用spring mvc时,我使用了@Service这样的注解, 发现使用注解@Transactional声明的事务不起作用。 我的配置如下:                   原因是: component-scan和事务所在的上下文不一样,component-scan所在的配置是由servlet加载的,事务所在的配置文件是由Listen

积累、奋斗 3万+

spring boot @Transactional注解事务不回滚不起作用无效

参考资料:https://blog.youkuaiyun.com/u011410529/article/details/54287307https://my.oschina.net/happyBKs/blog/1624482当@Transactional不起作用如何排查问题。可以按照以下几个步骤逐一确认:1、首先要看数据库本身对应的库、表所设置的引擎是什么。MyIsam不支持事务,如果需要,则必须改为Innn...

yueguanyun的专栏 3万+

@Transactional不起作用解决方案

@Transactional不起作用 解决方案: @Transactional 放在Service层 放在Controller层里不起作用。。。 这是Controller @RequestMapping(value = {"save"}) public String saveDiscover(OrientTeamsInfo orientTeamsInfo, RedirectAttribut...

sdaujsj1的博客 1147
上一篇: Curator连接状态源码浅析
下一篇: 跨域请求
coder265
博客等级 码龄14年 5粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值