问题标签 [spring-transactions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1695 浏览

spring - @ManagedBean 和 @Transactional - Spring 中的错误?解决方法?

我的 Webapp 中有以下 JSF 支持 bean

当它到达repository.save方法调用时 - 我收到以下错误

我有两个问题

  1. 这是因为这样的错误
  2. 我相信有两种解决方法 - 还有其他方法吗?

2.1 第一个解决方法 - 使用

2.2 第二种解决方法

创建一个辅助类并对其进行注释。

2.3(可能的第三种解决方法是在内部类的方法上注释 @Transactional 这与 2.2 非常相似)。

0 投票
2 回答
1470 浏览

hibernate - Groovy / Hibernate / @Transaction 返回 No Session found for current thread

我有一个 Spring/JPA/Groovy/Hibernate 堆栈,(注意:不是 grails),我发现我No session found for current thread在尝试@Transactional在启动时执行一些工作时遇到了问题。

我有一个控制器类,它@PostConstruct调用@Transactional另一个类的方法,该类尝试用一些要在模拟中使用的示例数据填充数据库。

这是controller课程:

如您所见,出于此处讨论的原因,我已经放弃了纯粹@Transactional的方法。@PostConstruct

MyIPublisher是一个 groovy 类,如下:

这是一个实现:

请注意,我也尝试过标记populateData()@Transactional,但没有任何效果。

在我的 Spring 上下文类中,我定义<tx:annotation-driven/>.

据我所知,我做的一切都是正确的。但是,我似乎无法让它发挥作用。

还需要什么?

更新: 以下是设置我的 dataAccess 相关 bean 的 bean:

0 投票
1 回答
5674 浏览

spring - Spring 3.1 - 无法找到 Spring NamespaceHandler

当我尝试在 Tomcat 6 上运行应用程序时,我遇到了一些 Spring 3.1 命名空间问题:

这是我的项目配置:

pom.xml:

应用程序上下文.xml

所有 JAR 都在WEB-INF/lib下,XML 配置在WEB-INF下。有什么想法吗?

提前致谢, 安德烈

0 投票
1 回答
218 浏览

spring - 方法上的 Spring PROPAGATION_REQUIRED 是否会阻塞其他线程?

假设一个线程进入一个名为 m1() 的方法并开始一个新事务。当第二个线程尝试进入同一个方法时,我们注意到第二个方法被阻塞了。PROPOGATION_REQUIRED 是否会阻塞第二个线程,直到第一个线程完成工作?未设置隔离(默认)。

谢谢。

0 投票
1 回答
2637 浏览

spring-aop - Spring事务和AOP

我仍处于 Spring 事务和 aop 的学习阶段,我有一些误解:
1. 如果我不使用 aop-advice,我会为每个服务指定如下内容:

@Transactional(rollbackFor=java.lang.Exception.class,readOnly=true)

然后我查看 spring 日志,一切似乎都按预期工作。我的意思是创建了一个事务,如果出现异常,我会得到回滚。但是如果你使用类似的东西:

因此,当我使用这种场景查看 spring 日志时,似乎有 2 个事务在另一个内部,因为在回滚后我得到类似的东西:

如您所见,我已经标记了我不理解的行。

第二个问题:在同一个日志文件中,我注意到如下一行:

我用谷歌搜索了一下,然后添加了这个:

entitymanager bean,现在看来 jpa 将事务公开给 jdbc 事务。问题是我不知道这种配置的优点/缺点是什么。

0 投票
2 回答
1870 浏览

transactions - Spring Propagation.REQUIRES_NEW @Transaction 提交仅在外部事务结束后出现在日志中

我有一个相互调用的事务方法,但似乎事务在它应该提交的位置之后提交,或者至少在那之后出现插入日志。这是调用层次结构:

只有在从根/初始方法调用返回后,我才会在日志中收到 ENTITY_CHANGED_IN_REVISION 表/EntityChange 实体的插入:

这点:

此日志仅在返回后出现:

而不是从@Transactional(propagation=Propagation.REQUIRES_NEW)的“保存500行块”方法返回后重新接收它们:

0 投票
2 回答
4786 浏览

spring - Grails 服务事务行为

在 Grails 应用程序中,服务方法的默认行为是它们是事务性的,如果抛出未经检查的异常,事务会自动回滚。但是,在 Groovy 中,不会强制处理(或重新抛出)受检异常,因此存在如果服务方法抛出受检异常,事务将不会回滚的风险。鉴于此,注释每个 Grails 服务类似乎是可取的

假设我有其他方法MyService,其中一个只读取数据库,另一个不接触数据库,以下注释是否正确?

为了回答这个问题,我想你需要知道我的意图是什么:

  • 如果任何方法抛出异常并且正在进行事务,它将回滚。例如,如果writeSomething()调用dontReadOrWrite(),并且后者抛出异常,则前者启动的事务将被回滚。我假设rollbackFor类级属性由各个方法继承,除非它们显式覆盖它。
  • 如果没有正在进行的事务,则不会启动诸如dontReadOrWrite
  • 如果调用时没有事务在进行readSomething(),将启动一个只读事务。如果一个读写事务正在进行,它将参与这个事务。
0 投票
2 回答
725 浏览

spring - Why Spring doesn't intercept transaction?

Tried to configure Spring for tests with hibernate and transactions. Getting bean from app context which is marked with @Transactional transaction isn't intercepted. What I could miss in configuration?

}

0 投票
1 回答
1172 浏览

spring - 我可以在一个事务中使用两个指向同一数据源的不同实体管理器吗?

我在 JPA 中使用 spring。而且我有两个 EntityManagers 包含不同的实体(一个应用程序的不同模块),并且都指向同一个数据源。

我可以在一个事务中同时使用它们(使用单个 TransactionManager)吗?我必须为此使用JTA吗?如果是这样,在 tomcat 下使用它的最佳选择是什么?

如何在 spring 中配置它?

0 投票
1 回答
419 浏览

hibernate - 原子性的嵌套事务(Propogation.REQUIRED_NEW / Propogation.NESTED)

首先,我会注意到我使用 Spring + Hibernate 作为我的 JPA2 实现。我的应用程序配置了 JpaTransactionManager 和 HibernateJpaDialect。

我有一个停用一个单元的功能,我有一个包装停用多个单元的功能。单元停用工作调用外部服务,如果该调用超时或返回错误状态,它将抛出异常。如果单个单元停用失败(通过此外部服务调用或由于 RuntimeException),我只想回滚该单元的事务。

我可以使用 Propogation.REQUIRES_NEW 来实现这一点,基本上如下:

这非常有效。

这种风格也很好地扩展到激活。

然而,当我需要做的时候,我遇到了一个问题reactivation。我想要的是一个reactivation利用现有deactivateUnitactivateUnit函数的原子任务,这样如果或者deactivateUnit或者activateUnit导致回滚,则整个函数将回滚。

我对此的天真尝试不起作用:

如果activateUnit回滚,deactivateUnit则不会。

我想也许我应该将激活和停用的传播更改为NESTED,但这并不能保留函数的回滚行为。

我有点茫然,所以我很感激任何帮助!