问题标签 [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 回答
2076 浏览

spring - 使用 Spring JDBC 在事务中插入新的父子记录时出错

我有 2 个具有一对多关系的表(项目和代码)(一个项目可以有多个代码 - 这是在数据库级别使用外键实现的)。

当我尝试使用 spring JDBC 在一个事务中插入一个项目记录和几个代码记录(它们链接到该项目记录)时,我得到

这是我插入数据库代码。

0 投票
1 回答
2953 浏览

hibernate - 无法使用包装的事务捕获 DataIntegrityViolationException

我正在使用 Spring 3 来管理数据库事务。每当引发异常时,我都会捕获异常并返回相应的消息。但是当 Spring 提交事务时,再次引发异常并包装在org.springframework.dao.DataIntegrityValidationException. 我该如何处理该异常?我应该使用拦截器还是其他东西?以前有人遇到过这个问题吗?

提前致谢

0 投票
1 回答
841 浏览

java - 在 Spring JTA 事务中创建本地事务

我想在 JTA 事务中执行存储过程,但由于某种原因必须使用本地事务。我为此使用本地事务管理器创建了一个切入点,但异常抛出如下。有人遇到过这样的问题吗?你怎么解决这个问题?

*

*

0 投票
2 回答
69208 浏览

java - Spring - 是否可以在同一个应用程序中使用多个事务管理器?

我是 Spring 新手,我想知道是否可以在同一个应用程序中使用多个事务管理器?

我有两个数据访问层 - 一个用于两个数据库。我想知道,您如何将一个事务管理器用于一层,而将不同的事务管理器用于另一层。我还不需要跨两个数据库执行事务。但我确实需要单独对每个数据库执行事务。我创建了一个图像来帮助概述我的问题:

替代文字

这是我的应用程序上下文配置:

以下是使用此配置的示例:

因此,对于帐户存储库,我想使用将持久性单元设置为帐户的实体管理器工厂。但是,对于我的 BusinessData Repository,我想使用具有不同持久性单元的实体管理器工厂。由于我只能定义一个事务管理器 bean,我该如何为不同的存储库使用不同的事务管理器?

谢谢你的帮助。

0 投票
7 回答
22094 浏览

java - Spring 和 Hibernate 突然将事务设置为只读

我们有一个在 JBoss 4.2.3 上运行的应用程序,使用 Spring 2.5.2 和 Hibernate 3.2.6.ga。它使用自己的用户在 Linux JEE01 2.6.16.60-0.54.5-smp 上运行。写入另一台机器上的 Oracle 10G 数据库。

我们使用的是标准视图 -> 服务 -> dao 分层。每个 dao 都使用 @Repository 进行注释。

这一切都在 24/7 全天候运行,没有太多问题,但是每隔几天,有时甚至一天几次,整个系统就会进入一个糟糕的状态,无法再将任何内容写入数据库。这些堆栈跟踪出现在日志中:

我们扫描了整个系统,在系统中的某个地方,flushmode 暂时设置为 MANUAL,之后,finally 块将其设置回其原始值。这是因为我们不想在此查询运行之前将状态刷新到数据库。所以我们不能轻易改变这一点。正常的 FlushMode 设置为 AUTO,在几个地方我们暂时将其设置为 COMMIT 并再次将其切换回默认值。

只有重新启动服务器才能将系统恢复到工作状态。

问题是:为什么系统将所有事务设置为只读/手动刷新模式?我用谷歌搜索了这个但找不到解决方案。

这是我们的 spring 和 hibernate 配置(仅显示相关部分):

这是堆栈跟踪:

这一切都很好

0 投票
1 回答
5382 浏览

hibernate - 手动递归删除在休眠中抛出“已删除的实例传递给合并”

注意:我使用的是 J2EE Spring MVC + Hibernate,两者都为此使用了注释。

我有一个在休眠中建模的文件系统,其中包含文件夹和这些文件夹中的文件的层次结构。每个文件夹都引用其父文件夹,如果它们是根文件夹,则为 null。他们没有对他们的孩子的引用,因为那里有一点多态性,我决定最好通过查询来检索孩子。无论如何,再加上我需要使用 MySQL 触发器来跟踪数据库中的历史记录,这意味着不能选择级联删除。

结果我必须手动删除东西。现在,递归逻辑似乎相当简单,我所要做的就是在文件夹 DAO 中执行以下操作:

不幸的是,当它尝试提交事务中的更改时,我不断收到“已删除的实例传递给合并”异常。DAO 被一个服务调用,该服务在类的顶部放置了以下事务注释:

我该如何解决?

0 投票
4 回答
3598 浏览

java - Spring 使用 new 创建的对象启动事务

我有一个带有注释的方法的 POJO 类@Transactional

Spring 声明式事务管理基于 AOP,但我对此没有任何经验。我的问题是:是否有可能在单独调用(new Pojo).doInTransaction()时,Spring 会启动一个事务。

0 投票
1 回答
2188 浏览

xml - 什么是 XML 命名空间,它与 Spring Transactions 有什么关系?

我刚刚浏览了一个 spring 事务教程,其中提到有一些元素可用于声明式事务管理,它们是在 tx 命名空间中定义的。tx 命名空间实际上包含什么。它在哪里定义,注册等?为什么我需要命名空间?

我想大致了解命名空间,而不仅仅是特定于 tx 命名空间。

0 投票
1 回答
680 浏览

mysql - withTransaction 不能正确回滚

在我的 Person 控制器 Delete 操作中,我希望如果发生 DataIntegrityViolationException,那么相关的授权记录将被恢复,但事实并非如此。无论如何,我真的什至不需要进行显式回滚,但是无论有没有它,回滚都不会发生。看来 withTransaction 回滚不起作用。还是我做错了什么?我正在使用 Grails 1.3.7 和 MySQL (innodb)。

更新

我意识到我的一些表不是innodb。我纠正了这一点,起初看起来问题已经解决了。我可以尝试删除用户记录,获取错误,然后以该用户身份登录。之前,登录失败并出现此错误,这意味着权限记录尚未回滚。

所以一切看起来都很好。然后我重新启动了我的应用程序,尝试登录并再次收到错误。因此,即使回滚似乎有效,但从未持久化到数据库中的记录。

0 投票
3 回答
56753 浏览

java - Spring 中的 Hibernate 事务管理器配置

在我的项目中,我使用带有程序化事务划分的 Hibernate。每次在我的服务方法中,我都会写一些类似的东西。

现在我将使用声明性事务管理重构我的代码。我现在得到的...

服务等级:

和简单的测试 -

当我尝试在 Transactional 方法之外获取用户电子邮件时,我得到了延迟初始化异常,我的情况是电子邮件是一个简单的字符串。Hibernate 甚至不执行 sql 查询,直到我在我的 POJO 上调用任何 getter。

  1. 我在这里做错了什么?

  2. 这种方法有效吗?

  3. 你能推荐任何在 spring/hibernate 上使用基于注释的配置的开源项目吗?

更新

出于某种原因,如果我用openSession替换getCurrentSession ,则此代码可以正常工作。有人可以解释一下吗?