Spring事务不回滚

2024-05-21

我有这样的事情:

@Service
@Transactional
public class ServiceA {

    @Autowired
    SomeDAO1 dao1; 

    @Autowired
    ServiceB serviceB;

    public void methodServiceA() {

        serviceB.someMethodThatRunsInsertIntoDB(); 
        dao1.anotherMethodThatRunsInsertIntoDB(); 

    }

}

@Service
@Transactional
public class ServiceB {

     @Autowired
     Dao2 dao2;

     public void someMethodThatRunsInsertIntoDB() {
          dao2.insertXXX();
     }

}

我的问题是:如果serviceB.someMethodThatRunsInsertIntoDB()执行成功但是dao1.anotherMethodThatRunsInsertIntoDB()抛出异常,所做的更改serviceB没有回滚。我需要回滚这些更改,以防发生异常dao1.anotherMethodThatRunsInsertIntoDB()。我怎样才能做到这一点?

// 已编辑

spring-servlet.xml 中的事务配置

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
    <property name="jpaDialect">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
    </property>
</bean>

如果一个 dao 使用 EntityManager 而另一个 dao 使用 JdbcTemplate 与 DB 交互,这是否相关?

//更新--EntityManager配置

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="true" />
            <property name="generateDdl" value="true" />
        </bean>
    </property>

你需要通过rollbackFor参数与您检查的异常的类型。默认情况下,Spring 似乎仅在未检查的异常上进行回滚。更多细节:Spring事务:异常或Throwable回滚 https://stackoverflow.com/questions/21188239/spring-transaction-rollback-on-exception-or-throwable

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

Spring事务不回滚 的相关文章

随机推荐

  • 如何动态改变描边颜色?

    抱歉我的语言不通 我是法国人 我需要改变stroke color形状的 我有同样的问题描述here https stackoverflow com questions 16775891 how to change solid color f
  • jQuery:查找文本并替换为 HTML

    我尝试查找并替换文本 使用 jQuery 实际上我正在尝试在文本周围添加一个 span 元素 我还应该能够再次删除跨度而不会丢失里面的文本 例如 假设我有以下情况 span This is a span element span 我希望能够
  • jquery:焦点到 div 不起作用

    ajax功能结束后 在成功消息中 我关注特定的 div 但这不起作用 我的代码在这里 j ajax url type POST data action press release page 0 do task do task id id m
  • SSIS 文件系统任务错误:分配给变量的值的类型...与当前变量类型不同

    好的 我有一个相对简单的SSIS 包 DTSDesigner100 Visual Studio 2008 版本9 0 30729 4462 QFE NET Framework 3 5 SP1 在包的 SSIS 控制流的末尾是文件系统任务这是
  • 使用 STL 容器进行 boost::interprocess::driven_shared_memory

    考虑以下情况 class Helper public Getters and setters are present private int i std map
  • 为什么pip找不到winrt?

    我刚买了一台新笔记本电脑 我正在尝试用 python 设置它 我正在使用 python 3 10 0 windows 10 pip v21 3 在大多数情况下 pip 似乎工作正常 我已经使用它来安装多个软件包 例如 pygame 但是 当
  • 如何仅添加一个BottomNavigationBarItem

    我有一个 BottomNavigationBar 我只需要在其中添加一个集中按钮 但我收到此错误 package flutter src material bottom navigation bar dart 断言失败 第 191 行 po
  • 更改组合框下拉列表边框的颜色

    My code Private Sub ComboBox2 DrawItem sender As Object e As DrawItemEventArgs Handles ComboBox2 DrawItem If e Index lt
  • 从名字和姓氏生成唯一的用户名?

    我的数据库中有很多用户 我想将他们的所有用户名重置为他们名字的第一个字母 加上他们的完整姓氏 正如你可以想象的那样 有一些骗子 在这种情况下 我想在用户名末尾添加 2 或 3 或其他内容 我将如何编写查询来生成这样的唯一用户名 UPDATE
  • CALayer 抗锯齿不如 UIView 抗锯齿

    我一直在尝试使用 CALayer 制作圆形绘图的动画 一切都运行良好 但问题是 绘制的圆不够抗锯齿 它的边界有点太粗糙 或者如果使用光栅化则模糊 抗锯齿已启用 还尝试过 边缘抗锯齿遮罩 kCALayerLeftEdge kCALayerRi
  • XHR 不起作用,因为“Access-Control-Allow-Origin 不允许来源”

    我正在使用 Rails 3 开发一个 API 服务器 到目前为止 它非常方便 但我一直遇到错误 我不确定这是因为我的 Apache 设置还是 Rails 应用程序 当我尝试执行 HTTP DELETE 或 PUT 请求时http sampl
  • 如何在views.py中检查用户的权限?

    在我的 Django 站点上的views py 文件中 我有一个基于类的视图 需要根据用户的权限更改变量 所以如果用户有pro view许可 然后它看到一件事 否则如果有basic view然后它看到另一个 我怎样才能在我的内部访问它get
  • PHP 换行符 (\n) 不起作用

    由于某种原因我无法使用 n使用 PHP 输出到文件时创建换行符 上面只写着 n 到文件 我尝试使用 n 同样 它只写 n 如预期 但我一生都无法弄清楚为什么在字符串中添加 n 不会创建新行 我也尝试过 r n但它只是附加 r n 到文件中的
  • 如何在 C# 中使用 Outlook MAPI 打开 .eml 文件?

    我有一个 C 应用程序 可以读取 msg 文件并提取正文和附件 但是当我尝试加载 eml 文件时 应用程序崩溃了 我正在加载这样的文件 MailItem mailItem MailItem outlookApp CreateItemFrom
  • Angular UI Select2,为什么 ng-model 被设置为 JSON 字符串?

    我使用 Angular ui 的 select2 来实现相当简单的下拉菜单 它由位于我的控制器范围内的静态数据数组支持 在我的控制器中 我有一个在下拉列表的 ng change 上调用的函数 以便我可以在值更改时执行一些操作 然而 我发现
  • 如何隐藏组合框下拉列表中的列?

    我正在 Excel 用户窗体中构建一个 ComboBox 该用户窗体从 Access 表中获取其行 我想在下拉列表中向用户显示多个文本字段 但从 ComboBox 返回的值应该是与用户选择的行关联的 ID 号 即 ID 列是绑定列 但我不想
  • Razor CheckBox用于在视图中有条件地检查和取消检查

    在我看来 我有 Html CheckBoxFor m gt m IsExist new id IsExist In my Model我有来自数据库的 IsExist 值 要么是真的 要么是假的 现在我如何根据 IsExist 中的 true
  • 打印“\n”或换行符作为终端输出的一部分

    我正在终端上运行 Python 给定一个字符串string abcd n 我想print它以某种方式使换行符 n in abcd n将是可见的而不是转到下一行 我可以做到这一点而不必修改字符串并添加双斜杠 n Use repr https
  • “匹配”语句中的“使用部分移动的值”错误

    My code fn main let mut messages vec let msg Message Write message msg to string match msg Message Write message gt prin
  • Spring事务不回滚

    我有这样的事情 Service Transactional public class ServiceA Autowired SomeDAO1 dao1 Autowired ServiceB serviceB public void meth