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

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

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

先来看看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代理

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

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

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

(0)
上一篇 2020年11月12日 上午9:19
下一篇 2020年11月12日 上午9:19


相关推荐

  • JAVA的网络编程基础概念建议收藏

    网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协

    2021年12月20日
    42
  • 如何求有向图的拓补序列

    如何求有向图的拓补序列求一个有向图的拓扑序列也是图论的基本题型 但是一般不会显式的看出题意是求拓扑序列或者求是否存在拓扑序列 拓扑序列一般用来判断一个图是否是一个有向无环图 如果一个图存在符合拓扑次序的序列则该图是有向无环图 反之则不是 求拓扑序列步骤 nbsp nbsp 1 找到一个入度为 0 的点作为拓扑序列的第一个点 nbsp nbsp 2 把该点和该点所有的边从图中删去 nbsp nbsp 3 再在新的图中选择一个入度为 0 的点作为拓扑系列

    2026年3月19日
    2
  • 渗透测试工具Burp Suite详解[通俗易懂]

    渗透测试工具Burp Suite详解[通俗易懂]BurpSuite的安装BurpSuite是一款集成化的渗透测试工具,包含了很多功能,可以帮助我们高效地完成对Web应用程序的渗透测试和攻击。BurpSuite由Java语言编写,基于Java自身的跨平台性,使这款软件学习和使用起来更方便。BurpSuite不像其他自动化测试工具,它需要手工配置一些参数,触发一些自动化流程,然后才会开始工作。BurpSuite可执行程序是Java文件类型的jar文件,免费版可以从官网下载。免费版的BurpSuite会有许多限制,无法使用很多高

    2022年8月12日
    10
  • n8n汉化后中文显示乱码如何解决?

    n8n汉化后中文显示乱码如何解决?

    2026年3月15日
    2
  • Java多线程设计模式:wait/notify机制

    Java多线程设计模式:wait/notify机制

    2021年5月6日
    124
  • PDF 补丁丁简介

    PDF 补丁丁简介PDF 补丁丁是一个用于修改 PDF 文件信息的工具 它具有以下功能 修改 PDF 信息 修改文档属性 页码编号 页面链接 页面尺寸 删除自动打开网页等动作 去除复制及打印限制 设置阅读器初始模式 贴心 PDF 书签编辑器 带有阅读界面 具有便于阅读竖排文档的从右到左阅读方式 可批量修改 PDF 书签属性 颜色 样式 目标页码 缩放比例等 在书签中执行查找替换 支持正则表达式及 XPath 匹配 可

    2026年3月19日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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