【事务】<查询不到同一调用方法其它事务提交的更新>解决方案

【事务】<查询不到同一调用方法其它事务提交的更新>解决方案

最近遇到一个很棘手的问题,至今也解释不清楚原因,不过已经找到了解决方案。

先来看看Propagation属性的值含义,@Transactional中Propagation属性有7个选项可供选择:

  1. Propagation.MANDATORY。当前方法必须在已经定义的Transaction中运行,如果没有已定义的Transaction则抛出异常。

  2. Propagation.NEST。如果没有已定义的Transaction,当前方法新开一个Transaction并在该Transaction中运行。如果存在已定义的Transaction,当前方法在嵌套事务(Nested Transaction)中运行 — 嵌套事务中可以定义储存点,因此可以独立于外部的Transaction而进行rollback。

  3. Propagation.NEVER 。当前方法不应在Transaction中运行,如果存在已经定义的Transaction则抛出异常。

  4. Propagation.NOT_SUPPORTED。当前方法不应在Transaction中运行,如果存在已经定义的Transaction,则该Transaction暂停(挂起)直至该方法运行完毕。

  5. Propagation.REQUIRED。 默认值。当前方法必须在Transaction中运行。如果存在已经定义的Transaction,则该方法在已定义的Transaction中运行;如果不存在已经定义的Transaction,则该方法新开一个Transaction并在其中运行。

  6. Propagation.REQUIRES_NEW。当前方法必须在新开的Transaction中运行。如果存在已经定义的Transaction,则该已定义的Transaction暂停直至新开的Transaction执行完毕。

  7. Propagation.SUPPORTS。当前方法不需要在Transaction中运行,但如果存在已经定义的Transaction,则该方法也可以在Transaction中正常执行。

遇到的问题是这样的:

// surports 查询不到同一调用方法其它事务提交的更新。 原因未知
a() {
  //surports
     b.b();//requstd or request_new
     b.c(); //surports --查询不到b方法中更新的数据

解决方式:

避免这种情况的方法, a()方法不被aop代理

现在只是用这种方式解决了,但是想不明白为什么要这么做,如果有哪位大神能解释清楚原因请告知一下,非常感谢!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/2264.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • MYSQL 回表、索引覆盖、 索引下推[通俗易懂]

    MYSQL 回表、索引覆盖、 索引下推[通俗易懂]1.索引种类创建数据表&插入数据createtableuser(idint(10)auto_increment,namevarchar(30),agetinyint(4),primarykey(id),indexidx_age(age)USINGBTREE)engine=innodbcharset=utf8mb4;insertintouser(name,age)values(‘张三’,30),

  • Android preference_android:orientation=”vertical”

    Android preference_android:orientation=”vertical”【正文】一、PreferenceFragment的引入:PreferenceActivity是一个非常有用的基类,当我们开发Android项目时避免不了选项设置,这些设置习惯用Preference来保存。Android专门为这种Activity提供了便捷的基类PreferenceActivity。如果继承自Preference则不需要自己控制Preference的读写,Preference

  • linux 下JDK卸载与安装

    linux 下JDK卸载与安装卸载:java-versionjavajavac判断jdk是否安装(显示版本号等信息,说明已经安装)whichjava(查看JDK的安装路径) rm-rfJDK地址(卸载JDK)  rm-rf/usr/java/jdk/jdk1.8.0_172/java-versionjavajavac查看是否卸载完毕vi命令编辑文件profile vi/etc/profile删除配置的环境变量…

  • Typora设置图片存储路径「建议收藏」

    Typora设置图片存储路径「建议收藏」Typora设置图片存储路径Typora设置图片存储路径Typora设置图片存储路径最近经常在用Typora编写文档,每次剪切的图都是默认保存在C盘中Typora默认的保存图片的文件夹中,每次找起来不是很方便,所有最近想设置下剪切图片保存的位置。因为这东西不常用,想想还是记录下来点击文件,选择偏好设置原来是无特殊操作,个人还是倾向于选择图中选项选择此选项后会,在md文档所在文件夹中…

  • transactionscope mysql_TransactionScope事务操作

    transactionscope mysql_TransactionScope事务操作using(TransactionScopetrans=newTransactionScope()){try{InsertUserBase();//它插入不成功,自己回滚UserInfosuserInfo=newUserInfos{UserID=”1″,RealName=”zzl”,};db.UserInfos.InsertOnSubmit(userInfo);db.SubmitC…

  • 【金融市场基础知识】——金融市场体系

    【金融市场基础知识】——金融市场体系阅读之前看这里????:博主是一名正在学习证券知识的学生,在每个领域我们都应当是学生的心态,也不应该拥有身份标签来限制自己学习的范围,所以博客记录的是在学习过程中一些总结,也希望和大家一起进步,在记录之时,未免存在很多疏漏和不全,如有问题,还请私聊博主指正。博客地址:天阑之蓝的博客,学习过程中不免有困难和迷茫,希望大家都能在这学习的过程中肯定自己,超越自己,最终创造自己。由于自己的学习兴趣,所以决定学习证券从业的知识,也继续写博客来进行总结和归纳。目录金融市场体系一、金融市场概述1、金融市场的概念和

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号