问题标签 [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.
spring - @ManagedBean 和 @Transactional - Spring 中的错误?解决方法?
我的 Webapp 中有以下 JSF 支持 bean
当它到达repository.save
方法调用时 - 我收到以下错误
我有两个问题
- 这是因为这样的错误吗?
- 我相信有两种解决方法 - 还有其他方法吗?
2.1 第一个解决方法 - 使用
2.2 第二种解决方法
创建一个辅助类并对其进行注释。
2.3(可能的第三种解决方法是在内部类的方法上注释 @Transactional 这与 2.2 非常相似)。
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:
spring - Spring 3.1 - 无法找到 Spring NamespaceHandler
当我尝试在 Tomcat 6 上运行应用程序时,我遇到了一些 Spring 3.1 命名空间问题:
这是我的项目配置:
pom.xml:
应用程序上下文.xml
所有 JAR 都在WEB-INF/lib下,XML 配置在WEB-INF下。有什么想法吗?
提前致谢, 安德烈
spring - 方法上的 Spring PROPAGATION_REQUIRED 是否会阻塞其他线程?
假设一个线程进入一个名为 m1() 的方法并开始一个新事务。当第二个线程尝试进入同一个方法时,我们注意到第二个方法被阻塞了。PROPOGATION_REQUIRED 是否会阻塞第二个线程,直到第一个线程完成工作?未设置隔离(默认)。
谢谢。
spring-aop - Spring事务和AOP
我仍处于 Spring 事务和 aop 的学习阶段,我有一些误解:
1. 如果我不使用 aop-advice,我会为每个服务指定如下内容:
@Transactional(rollbackFor=java.lang.Exception.class,readOnly=true)
然后我查看 spring 日志,一切似乎都按预期工作。我的意思是创建了一个事务,如果出现异常,我会得到回滚。但是如果你使用类似的东西:
因此,当我使用这种场景查看 spring 日志时,似乎有 2 个事务在另一个内部,因为在回滚后我得到类似的东西:
如您所见,我已经标记了我不理解的行。
第二个问题:在同一个日志文件中,我注意到如下一行:
我用谷歌搜索了一下,然后添加了这个:
entitymanager bean,现在看来 jpa 将事务公开给 jdbc 事务。问题是我不知道这种配置的优点/缺点是什么。
transactions - Spring Propagation.REQUIRES_NEW @Transaction 提交仅在外部事务结束后出现在日志中
我有一个相互调用的事务方法,但似乎事务在它应该提交的位置之后提交,或者至少在那之后出现插入日志。这是调用层次结构:
只有在从根/初始方法调用返回后,我才会在日志中收到 ENTITY_CHANGED_IN_REVISION 表/EntityChange 实体的插入:
这点:
此日志仅在返回后出现:
而不是从@Transactional(propagation=Propagation.REQUIRES_NEW)的“保存500行块”方法返回后重新接收它们:
spring - Grails 服务事务行为
在 Grails 应用程序中,服务方法的默认行为是它们是事务性的,如果抛出未经检查的异常,事务会自动回滚。但是,在 Groovy 中,不会强制处理(或重新抛出)受检异常,因此存在如果服务方法抛出受检异常,事务将不会回滚的风险。鉴于此,注释每个 Grails 服务类似乎是可取的
假设我有其他方法MyService
,其中一个只读取数据库,另一个不接触数据库,以下注释是否正确?
为了回答这个问题,我想你需要知道我的意图是什么:
- 如果任何方法抛出异常并且正在进行事务,它将回滚。例如,如果
writeSomething()
调用dontReadOrWrite()
,并且后者抛出异常,则前者启动的事务将被回滚。我假设rollbackFor
类级属性由各个方法继承,除非它们显式覆盖它。 - 如果没有正在进行的事务,则不会启动诸如
dontReadOrWrite
- 如果调用时没有事务在进行
readSomething()
,将启动一个只读事务。如果一个读写事务正在进行,它将参与这个事务。
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?
}
spring - 我可以在一个事务中使用两个指向同一数据源的不同实体管理器吗?
我在 JPA 中使用 spring。而且我有两个 EntityManagers 包含不同的实体(一个应用程序的不同模块),并且都指向同一个数据源。
我可以在一个事务中同时使用它们(使用单个 TransactionManager)吗?我必须为此使用JTA吗?如果是这样,在 tomcat 下使用它的最佳选择是什么?
如何在 spring 中配置它?
hibernate - 原子性的嵌套事务(Propogation.REQUIRED_NEW / Propogation.NESTED)
首先,我会注意到我使用 Spring + Hibernate 作为我的 JPA2 实现。我的应用程序配置了 JpaTransactionManager 和 HibernateJpaDialect。
我有一个停用一个单元的功能,我有一个包装停用多个单元的功能。单元停用工作调用外部服务,如果该调用超时或返回错误状态,它将抛出异常。如果单个单元停用失败(通过此外部服务调用或由于 RuntimeException),我只想回滚该单元的事务。
我可以使用 Propogation.REQUIRES_NEW 来实现这一点,基本上如下:
这非常有效。
这种风格也很好地扩展到激活。
然而,当我需要做的时候,我遇到了一个问题reactivation
。我想要的是一个reactivation
利用现有deactivateUnit
和activateUnit
函数的原子任务,这样如果或者deactivateUnit
或者activateUnit
导致回滚,则整个函数将回滚。
我对此的天真尝试不起作用:
如果activateUnit
回滚,deactivateUnit
则不会。
我想也许我应该将激活和停用的传播更改为NESTED
,但这并不能保留函数的回滚行为。
我有点茫然,所以我很感激任何帮助!