JPA + Spring 异常后回滚事务

2023-11-29

我正在使用 Spring 和 JPA,下面带有 HIbernate。当抛出 PersistenceException 时,我想捕获它并返回错误消息,以便它不会传播给调用者。

@Transactional
public String save(Object bean) {
    String error = null;

    try {
        EntityManager entityManager = getEntityManager();

        for (int i = 0, n = entities.size(); i < n; i ++) {
            entityManager.merge(entities.get(i));
        }
    }
    catch (PersistenceException e) {
        error = e.getMessage();
    }

    return error;
}

但我有一个例外说javax.persistence.RollbackException: Transaction marked as rollbackOnly.我知道事务需要在异常后回滚,但是当我捕获异常并且不想重新抛出它时如何回滚它?


通过使用@事务性如果方法中抛出任何RuntimeException,它会自动执行回滚。您不需要手动执行此操作。您可能根本不应该捕获该异常,而是让它传递到更高级别的 ExceptionHandler,该异常处理程序向用户显示一些标准错误页面(而不是堆栈跟踪)。此外,您的方法被标记为 void 但您返回一个字符串。

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

JPA + Spring 异常后回滚事务 的相关文章

随机推荐

  • 在Delphi XE中使用UIDocumentInteractionController

    我有一个 Delphi XE5 应用程序 可以在设备上本地下载和存储 PDF 我在表单上有一个 TWebBrowser 来查看 PDF 它工作得很好 我现在希望与其他应用程序 例如 Safari Mail 等 共享 PDF 但我真的很挣扎
  • xUnit.net:全局设置+拆卸?

    这个问题是关于单元测试框架的xUnit net 我需要在执行任何测试之前运行一些代码 并在所有测试完成后运行一些代码 我认为应该有某种属性或标记接口来指示全局初始化和终止代码 但找不到它们 或者 如果我以编程方式调用 xUnit 我也可以使
  • 将 HTML 选择存储到变量中/在 Google 表格中使用该数据

    我几乎已经有了一个 HTML 表单选择器 它根据 google 表格列中的数据创建一个数组 完成 并将该数据填充到下拉框中 完成 我整个周末一直在尝试弄清楚如何捕获下拉选项的选择 然后将其合并到一个变量中 这是我的启动 HTML 弹出窗口的
  • 将图例宽度设置为 100% 绘图宽度

    无论实际尺寸如何 如何将图例高度或宽度设置为绘图高度 宽度的 100 library ggplot2 ggplot iris aes Petal Width Sepal Width color Petal Length geom point
  • jquery加载函数问题

    我正在尝试使用 jquery 加载函数在按下按钮时将转换为 DAE 文件的 3D 模型加载到目标 div 中 然而 当按下按钮时 屏幕上会出现与文件相关的大量数字 而不是模型 这是问题的屏幕截图 如果不可能做到这一点 我还想知道是否可以使用
  • Java 字符串连接

    我的 java 代码有问题 我昨天问了同样的问题 我得到了答复 但很抱歉这是我的错 我的问题不清楚 我的代码如下所示 for i 0 i lt geo getTargets length i if geo getTargets i getT
  • 如何以编程方式打开受密码保护的 PDF 文件?

    Adobe IFilter 不提供提供密码来打开受密码保护的 PDF 文件的机制 因此它不能用于打开受密码保护的文件 我想知道 是否有一种相对简单的方法来以编程方式检索 PDF 文件中的实际加密数据 使用标准加密 API 对其进行解密 然后
  • 如何在图形和子图周围添加边框或框架

    我想创建这样的图像 但我无法将各个图放入框架内 图形和坐标轴都有一个 patch 属性 它是构成背景的矩形 因此 设置图形框架非常简单 import matplotlib pyplot as plt fig axes plt subplot
  • jQuery 和 AJAX 登录表单

    我正忙于开发一个网站 右上角有一个登录框 我希望用户能够在同一页面上登录 而无需刷新 好的 我已经完成了该部分的工作 但我仍然在登录后过程中苦苦挣扎 我的外观如下 HTML li class login li PHP session sta
  • 使用jquery动态改变背景颜色

    现在我的页面的一部分有一个对象列表 当您将鼠标悬停在它们上方时 背景会变成浅黄色 并在鼠标移开时恢复为白色 我希望其中一个对象在满足条件时变成绿色背景 如果不满足则恢复正常 我遇到这种情况有一个问题 如果满足条件 它会改变颜色 如果不满足
  • 如何避免在 Excel 文件下载过程中出现 Response.End()“Thread was being aborted”异常

    我尝试将数据集转换为 Excel 并下载该 Excel 我得到了所需的 Excel 文件 但是每次 Excel 下载都会引发 System Threading ThreadAbortException 如何解决这个问题 请帮我 我在我的 a
  • 手机上测试Admob时DEVICE_ID_EMULATOR和TEST_EMULATOR的区别

    使用 TEST EMULATOR 和 DEVICE ID EMULATOR 有什么区别 我想在我的手机上测试admob广告系统 NOT在 PC 上的模拟器上 AdRequest ad new AdRequest Builder addTes
  • 如何更改进度条的颜色

    我想改变颜色最后更新文本 默认情况下它是黑色的 有没有办法引入一些代码来改变我为栏文本所做的文本颜色 帮我介绍一下缺少的代码 div span 2 span div div div Last updated 7 01 2013 progre
  • 从另一个 php 文件调用未定义的函数

    好吧 这就是我的代码的样子 索引 php require once WebsiteRoot include testfile php TestFunction include testfile php function TestFuncti
  • QLPreviewController 视图

    我只是想访问 QLPreviewController view 事实上 我想捕获其视图上的点击事件以显示 隐藏工具栏等 我正在尝试 QLPreviewController qlpc QLPreviewController new qlpc
  • 如何进行通用订单[重复]

    这个问题在这里已经有答案了 我有一个数据库作为数据框 我想对所有列进行排序 但保持元素之间的关系 例如 如果我执行以下操作 gt DF A B C D 1 11 2 432 4 2 11 3 432 4 3 13 4 241 5 4 42
  • 使用 mongoose model.find() 获取仅 1 个字段的所有条目

    我尝试使用 model find 的不同变体 但没有一个能达到我想要的效果 下面的代码是我正在使用的代码 但它显示每个字段 而我只想要 iframe 字段 app get api videos function req res Video
  • 如何将选择值存储到 php 变量中

    我有一个简单的下拉选择菜单 div div
  • 将匹配多个批量输入的 LINQ 表达式 [重复]

    这个问题在这里已经有答案了 如何编写匹配多个批量输入的 LINQ 表达式 这是我的数据库表 Members Division Department 1 3 4 9 5 1 6 3 9 2 我想选择标有 的成员 这是我的输入 int divi
  • JPA + Spring 异常后回滚事务

    我正在使用 Spring 和 JPA 下面带有 HIbernate 当抛出 PersistenceException 时 我想捕获它并返回错误消息 以便它不会传播给调用者 Transactional public String save O