问题标签 [transactional]

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 回答
8136 浏览

spring - org.postgresql.util.PSQLException:大对象不能在自动提交模式下使用

我正在使用 Spring、JPA、Hibernate、Postgresql。我可以将文件上传/插入到数据库中。但是当我尝试访问该文件时出现错误。

当我从 JSP 文件中删除片段代码时,它很好。

我检索 purchaseOrder 的方法:

这是两个实体的关系:

采购订单报价


我不清楚。对不起。这里我不直接访问 BLOB 文件,我得到它的父对象。

我能够毫无问题地上传文件并检索一个 purchaseOrder。当我在 JSP 文件中添加这段代码时,它只报告错误。但它不应该尝试访问 BLOB 字段,因为我设置了 FetchType.LAZY。我有点迷惑不解了。

0 投票
1 回答
716 浏览

hibernate - 休眠事务,没有活动事务的提交无效

首先,对不起,如果我的英语这么差,我是使用hibernate的新手,所以有一些问题想问所有的前辈。这是条件:我使用 zk 作为视图,在一个视图中,我有一个工具栏,其中包含(添加)、(保存)、(取消)按钮。所以我想要的是当用户 klik(添加)hibernate 将启动一个新事务,然后用户在该用户 klik(保存)之后插入一些数据。在这个(保存)按钮事件中,hibernate 将调用 commit 将数据插入数据库。

问题是当用户单击保存时,在 1 次跟踪程序流程后出现错误消息“提交无效,没有活动事务”,我发现当用户单击(保存)按钮时,我之前启动的事务不再处于活动状态。

##我想问的是为什么事务在我还没有提交的时候处于非活动状态?##

我正在使用带有 hibernate 和 hibernate.current_session_context_class = Thread 的 spring

谢谢您的帮助

0 投票
1 回答
5618 浏览

java - Spring @transactional 在 mode=aspectj 下表现异常

几天来,我一直试图让 Spring 事务在我的应用程序中正常工作,现在我无处可去,只能求助于社区。在此先感谢您的帮助。

我的应用程序有特定要求,我需要使用 @Transactional 注释受保护的覆盖方法并从抽象父类调用此方法。根据我的阅读,我不能使用代理,必须使用 mode=aspectj。

首先,一些配置:

如果我在 ID_DataAccessor 中的方法上使用 @Transactional 注释,则连接是事务性的 ( DataSourceUtils.isConnectionTransactional(c, dataSource) == true)。但这对我来说没用,因为一旦方法完成,事务就会提交。当我在调用 DataAccessor 中的方法的方法上使用 @Trasnactional 时,DataAccessor (from DataSourceUtils.getConnection(dataSource)) 中获取的连接不是事务性的。此外,我在 DataSourceTransactionManager.doGetTransaction() 中放置了一个断点,只有在 @Transactional 注释直接位于获取连接的方法上时才会调用此断点。请原谅我重载了术语,但似乎 @Transactional 注释不会向上传播堆栈。

我完全感到困惑。请帮忙!:)

0 投票
1 回答
2747 浏览

hibernate - 删除实体时避免 StaleObjectStateException

我有 2 个并发线程同时进入(Spring)事务服务。

使用 Hibernate,服务方法加载一些实体,处理这些实体,找到一个并将其从数据库中删除。伪代码如下:

如果两个线程同时传递相同的参数,则两者都将“找到”两个都将调用的相同实体deleteorg.hibernate.StaleObjectStateException当会话关闭时,其中一个将失败。

我希望两个线程都返回实体,而不会抛出异常。为了实现这一点,我尝试在删除实体之前锁定(使用“select ... for update”)实体,如下所示:

我使用load()而不是get()因为根据休眠 API,如果已经在会话中,get 将返回实体,而 load 应该重新读取它。

如果两个线程同时进入上述方法,其中一个线程阻塞了一个锁定阶段,当第一个线程关闭事务时,第二个线程被唤醒并抛出一个org.hibernate.StaleObjectStateException. 为什么?

为什么锁定的负载不只是返回null?我怎么能做到这一点?

0 投票
1 回答
1814 浏览

java - Seam @Transactional 注释不起作用?

我在接缝组件上使用@Transactional 注释,类似于:

在“一些更多的东西”部分,我正在修改一些 Hibernate 实体,然后遇到了一个引发异常的错误。我注意到异常并没有导致事务回滚(修改后的实体仍在数据库中修改),所以我添加了“事务活动”日志记录。当此代码执行时,isActive() 返回 false。

有什么我想念的吗?为什么交易不活跃?

万一这很重要,我正在使用另一个组件内部的 Seam 组件,该组件使用 RESTEasy 注释来触发我的方法调用。

0 投票
3 回答
1879 浏览

ruby-on-rails - Rails 和 Mailchimp - 欢迎电子邮件

每当用户在我们的网站上注册时,我都需要发送一封欢迎电子邮件。

为此,我在 mailchimp 中创建了一个活动。

我还连接了原始人宝石。

因此,每次我将用户添加到组(welcome_email 组)时,我都想为新用户重新发送活动。我应该为每封电子邮件重新创建新的反式营销活动吗?

我可以使用相同的广告系列并重新发送给新用户吗?

实现这一目标的最佳方法是什么?

0 投票
1 回答
7229 浏览

spring - Spring @transactional 注解用法

如果我不在 limsservice 的审计方法上放置 @Transactional 注释,审计日志不会持久化。但是持久化服务中的持久化方法已经有了这个注释。为什么我必须放置这个注释。

0 投票
2 回答
223 浏览

java - 多个包装对象中的反射

在 JUnit 测试中,我想在 Spring DAO 中更改休眠模板。这个 DAO 是

  1. 用 @Transactional 注释,因此它在运行时被包装,并且
  2. 被 Mockitos spy()- 方法监视。因此,DAO 将被该间谍第二次包裹。

所以DAO 现在有两个包装对象:一个来自@Transactional,一个来自间谍。由于不知道首先创建哪些包装器,我无法通过反射在 DAO 中设置休眠模板。

如何在双重包装的 DAO 中设置模板?

[编辑]

一些来源:

在测试类中:

0 投票
1 回答
4599 浏览

hibernate - Spring嵌套@Transactional方法和回滚

我有一个@Service 类,它有一个@Transactional 方法,该方法在同一个类上调用另一个@Transactional 方法。我正在为此测试回滚行为,但发现它无法正常工作。代码看起来像这样:

运行 methodOne 后,我检查了数据库并发现了更改,即使日志显示“JDBCTransaction - rollback”。

如果我单独调用 methodTwo 并在其末尾添加一个异常,则更改将正确回滚。

有没有办法让 methodOne 正确回滚嵌套 @Transactional 调用期间发生的更改?我的印象是 REQUIRED 的默认传播可以实现这一点,但它似乎不起作用。谢谢

更新

好吧,我刚刚注意到别的东西。就在抛出异常之前,我正在调用服务的 dao 并通过“executeUpdate”执行手动更新。如果我评论这一行,嵌套回滚将起作用。所以看起来问题实际上是调用 DAO 并运行 executeUpdate 查询。但这不应该在当前事务中运行吗?

0 投票
4 回答
6138 浏览

spring - Spring Bean 使用 @Transactional 挂起方法

只是一点背景,我是一名新开发人员,在高级开发人员离开公司后,我最近接手了一个重大项目,我还没有完全了解他是如何构建这个项目的。我会尽力解释我的问题。

此应用程序创建多个 MessageListner 线程以从 JMS 队列中读取对象。一旦接收到对象,数据就会根据某些业务逻辑进行操作,然后映射到持久性对象,以使用休眠的 EntityManager 保存到 oracle 数据库。

直到几周前,自从我加入该项目以来,在过去一年左右的时间里,这种配置还没有出现任何重大问题。但是对于其中一个队列(问题与此特定队列隔离),处理接收到的对象的 spring 托管 bean 在下面的方法中挂起。我的调试使我得出结论,它已完成方法中的所有内容,但在完成时挂起。经过数周的尝试解决此问题后,我对这个问题束手无策。对此的任何帮助将不胜感激。

由于每个 MessageListner 都有自己的处理器,因此这种挂起方法只影响一个队列上的传入数据。

我插入调试语句只是为了遍历该方法,它完成了包括 entityMgr.flush.() 在内的所有内容。