Spring异常时事务回滚

2023-11-30

我正在学习Spring,并且在Spring中的事务处理方面遇到了一些麻烦。

这是我的代码

@Transactional(rollbackFor = Exception.class)
public void createGroupStudent(Student A,Student B,String nameGroup){
    try{
        //create Group
        createGroup(nameGroup);
        //createMember
        createMember(A,B);
    }catch(Exception e){
        logger.error(e.getMessage());
    }
}

@Transactional(rollbackFor = Exception.class)
public void createGroup(String nameGroup){
    try{
        repoGroup.save(nameGroup);
    }catch(Exception e){
        logger.error(e.getMessage());
    }
}

@Transactional(rollbackFor = Exception.class)
public void createMember(Student A,Student B){
    try{
        // function will throw a kind of Exception involve to " error constraint sql oracle " . 
        //It's my intended
        repoMember.save(A,B);
    }catch(Exception e){
        logger.error(e.getMessage());
    }
}

问题是当函数createMember()抛出异常,事务总是回滚,为什么?我不明白发生了什么事!我在每个方法中都添加了try、catch,但是没有用。

虽然方法createMember()保存到数据库时遇到问题(这里我使用函数saveAndFlush())。我知道并且我捕获了该异常。母公司交易createGroupStudent()认为本身没有问题并提交事务。但是当再次提交方法时createMember()会中断并抛出异常。我认为方法createGroup()不会回滚。但实际上,该函数回滚了,所有事务都回滚了?发生了什么?。

我正在使用atomikos交易。

非常感谢


如果任何方法抛出Exception,事务将回滚。但没有一个方法抛出Exception。重新抛出Exception在 catch 块中,它将起作用。检查文档交易性注解。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring异常时事务回滚 的相关文章

随机推荐

  • uWSGI用于上传和处理文件

    我有一个用 Bottlepy 编写的 Python Web 应用程序 它的唯一目的是允许人们上传将要处理的大文件 大约需要 10 15 分钟来处理 上传代码相当简单 route upload method POST def upload f
  • 函数的 Javascript 类继承

    我已经设置了一个基类作为标准 MyBase function this m Stuff 0 etc MyBase prototype MySuperFunction function arg1 alert Hello arg1 接下来我设置
  • 如何在 JPanel 上绘制图像并在其中添加组件

    我的应用程序是一个简单的打砖块游戏 为了绘制应用程序的视觉效果 我使用 PaintComponent 方法 该应用程序还有几个使用以下代码添加的按钮 levelMenu new JPanel Override public void pai
  • 如何使用 Selenium 和 Python 查找与用户输入相关的元素?

    以下是 HTML 结构 div class list div p class code 12345 p p class name abc p div div p class code 23456 p p class name bcd p d
  • openmp 在我的 mac 上以单线程运行

    我正在尝试在 Mac 上使用 openmp 并行化程序 但我无法使其成为多线程 我尝试从源代码 在 svn co 之后 构建 llvm clang openmp 3 7 1 作为有记录的 我也尝试过使用llvm 项目提供的 clang 和
  • 将 WSDL 转换为其各自的 HTTP 绑定

    我只是尝试根据 WSDL 提供的数据将 WSDl 转换为许多不同的 HTTP 请求 我读过很多类似的问题 但没有一个真正提供答案 有人说用SOAPUI 我熟悉这个应用程序并使用它 但我需要自己从 WSDL 创建这些 HTTP 请求 有人说要
  • JSON 字符串中的反斜杠

    我不熟悉这种格式 d Table pCol 12345 fCol jeff lCol Smith dId 1111111 tDate Date 1153033200000 0700 我在用着牛顿软件序列化我从 ASP Net Web 服务返
  • 原子操作、std::atomic<> 和写入顺序

    GCC 编译如下 include
  • 返回指向对象的指针的函数调用是纯右值吗?

    让我们想象一下这个函数 C get C c int offset return c offset 我想知道对此函数的调用是否被评估为纯右值 C array c 3 C c2 get array c 2 Is get array c 2 右值
  • 我如何使用 com.itunes.plist 找到 itunes 媒体文件夹位置

    我需要通过 com itunes plist 访问在 iTunes Preferences Advanced 中设置的 itunes 媒体文件夹位置 请帮我 Thanks 媒体文件夹的位置存储在 alis 11345 音乐文件夹位置 键下
  • C++ 类成员初始化顺序

    我知道在一个class成员按照列出的顺序进行初始化 这是否适用于将变量分组为public and privateETC 我的困惑是我无法弄清楚是否存在诸如private成员按照之前列出的顺序进行初始化public成员 无论私有变量在类声明中
  • Deadline_timers 的非阻塞 boost io_service

    阅读 boost asio deadline timer 的文档后 似乎 io service run 和处理程序方法是在同一线程上调用的 在后台线程上运行 io service 对象时 是否有任何方法可以在一个线程上创建计时器 为了好玩和
  • 拉链常见问题

    给定任何容器类型 我们都可以形成 以元素为中心的 Zipper 并且知道该结构是 Comonad 最近对此进行了精彩的详细探讨另一个堆栈溢出问题对于以下类型 data Bin a Branch Bin a a Bin a Leaf a de
  • 通过 FetchContent 安装 protobuf 时如何使用 cmake 命令 protobuf_generate?

    我正在使用 gRPC 编写客户端 服务器 要生成客户端 服务器 protobuf 代码 我需要运行 cmake 命令protobuf generate 如果我事先安装了 protobuf 我就可以访问该命令protobuf generate
  • Silverlight 4 和 Windows Phone 7 的 Bing 地图控件中的交互式图层

    使用 Bing 地图控件时 我的应用程序会添加一个叠加层 在其上将位置标记绘制为椭圆形 每个椭圆都连接到一个 Tap 处理程序 该处理程序在 WP7 模拟器中按预期工作 遗憾的是 HTC 硬件上的情况似乎并非如此 地图本身似乎获取了所有输入
  • 如何将 PHP 字符串传递到 Javascript 函数调用中? [复制]

    这个问题在这里已经有答案了 可能的重复 将 PHP 字符串传递给 Javascript 变量 并转义换行符 所以 本质上我试图从 PHP 页面传递一个字符串作为 javascript 函数的参数 PHP 包含在脚本所在的页面中 但它们位于两
  • 带有行号的 pandas 堆栈

    我有一个 Pandas DataFrame 示例 A B C D 0 0 441040 0 235533 0 899417 1 960367 1 0 701764 2 343389 1 293865 0 556737 2 0 511988
  • 何时使用 L.TileLayer 与 L.tileLayer

    我刚刚使用 Leaflet 为网站构建地图 并注意到要添加平铺层至少可以使用两种方法 L TileLayer and L tileLayer 其名称仅因单个字符的大小写而异 然而 虽然这两种方法返回的对象都可以添加到由L map 返回的对象
  • PHP - CodeIgniter - 为 foreach() 提供的参数无效

    我尝试使用 CodeIgniter 编写一个网站 但 PHP 遇到问题 我确信它是如此简单并且不会错 但我不知道 bug 只是 CodeIgniter 的新手
  • Spring异常时事务回滚

    我正在学习Spring 并且在Spring中的事务处理方面遇到了一些麻烦 这是我的代码 Transactional rollbackFor Exception class public void createGroupStudent Stu