当前位置: 首页 > 知识库问答 >
问题:

只为一个方法更改Hibernate事务超时?

有宏峻
2023-03-14

我正在寻找一种不需要创建不同于其他方法的HibernateTransactionManager的解决方案

共有1个答案

吕灿
2023-03-14

Spring有一个@transactional注释,用于标记应该在事务上下文中运行的方法(以及作用域)。此批注有一个timeout属性,可用于重写默认超时。

请注意,超时只能在事务级别设置,因此timeout属性仅在注释导致启动新事务时使用。文档特别指出:“专为propagation.required或propagation.requires_new设计,因为它只适用于新启动的事务。”

propagation.required只会在没有活动事务时启动一个新事务,因此如果要确保设置了超时,则需要启动一个新事务,因此最好使用propagation.requires_new

 类似资料:
  • 我正在尝试创建一个事务方法,该方法调用其他几个事务方法以保存一些相互依赖的db实体。如果任何调用失败,我希望事务完全回滚。但是,这不是观察到的行为。这是我的代码: 也有and,但是当事务在第二次调用时失败时,第一个被提交。

  • 问题内容: 为了了解Spring事务的工作原理,我想知道在以下情况下发生的情况:如果一种方法标记为,而另一种方法标记为。 假设配置使用所有默认设置。 现在,如果我要输入,显然可以开始交易。然后,钻进去会发生什么?交易已经存在的事实会导致没有新的交易诞生,还是我在这里创建两个交易? 关于Propagation的文档(在下面引用)似乎涵盖了这一点,但是我想验证一下我的理解 Propagation:通常

  • 我正在尝试使用Hibernate保存数据。一切都发生在同一会话中。逻辑如下: 1)开始交易并尝试保存: 2) 如果新记录违反完整性约束,请在外包装方法中捕获异常,打开另一个事务并查询更多数据 问题是当第二个事务执行时query.list它会抛出一个应该与前一个事务链接的异常。 SQLIntegrityConstraintViolationException:ORA-00001:唯一约束 我应该从另

  • 问题内容: 为了了解Spring事务的工作原理,我想知道在以下情况下会发生什么情况,其中一种方法标记为,而另一种方法标记为。 假设配置使用所有默认设置。 现在,如果我要输入,显然可以开始交易。然后,钻进去会发生什么?事务已经存在的事实会导致没有新的事务诞生,还是我在这里创建两个事务? 关于传播的文档(在下面引用)似乎涵盖了这一点,但是我想验证一下我的理解,这对于我的处女大脑来说可以一次理解所有知识

  • 我正在为应用程序使用Spring data JPA的存储库。目前,我正在使用spring data jpa存储库默认提供的基本CRUD操作,对于复杂的join查询,我正在编写定制的JPQL查询,如下所示: 在我的服务类中,我自动生成这个存储库并执行DB操作。 目前,我只是将标记为。 我是否也应该将方法标记为?因为它只执行读取操作。 我是否也应该将标记为事务性(readOnly=true)?我读到所