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

无任何可见原因标记为状态回滚的事务(Wildfly 11、Hibernate 5.1.10、PostgreSQL 10)

王建华
2023-03-14

NamedQuery在大多数情况下都能正常工作,但有一种情况是错误发生时,日志文件中没有任何可见的通知。

事务被标记为状态回滚,但我不知道为什么。没有异常,没有调试消息,什么都没有。

在此场景中,与相同的NamedQuery的唯一区别是,在同一事务中,在几个步骤之前从表中删除了行。

这是Hibernate未能准备语句的相关Stacktrace:

由:org.hibernate.exception.genericjdbcexception:无法在org.hibernate.exception.internal.standardsqlexceptionconverter.convert(standardsqlexceptionconverter.java:47)在org.hibernate.engine.jdbc.spi.sqlexceptionhelper.convert(sqlexceptionhelper.java:111)在在org.hibernate.loader.loader.loader.executeQueryStatement(loader.java:1934)在org.hibernate.loader.loader.executeQueryStatement(loader.java:1903)在org.hibernate.loader.loader.executeQueryStatement(loader.java:1881)在org.hibernate.loader.loader.doQuery(loader.java:1881)在org.hibernate.loader.loader.doQuery(:2605)在org.hibernate.loader.loader.ListignoRequeryCache(loader.java:2434)在org.hibernate.loader.loader.list(loader.java:2429)在org.hibernate.loader.hql.queryLoader.list(queryLoader.java:501)在org.hibernate.hql.internal.ast.queryTranslatorImpl.list(queryLoader.java:371)在:1339)在org.hibernate.internal.queryimpl.list(queryimpl.java:87)在org.hibernate.jpa.internal.queryimpl.list(queryimpl.java:606)在org.hibernate.jpa.internal.queryimpl.getResultlist(queryimpl.java:483)...172更多

原因:java.sql.sqlexception:IJ031070:事务无法继续:STATUS_MARKED_ROLLBACK在org.jboss.jca.adapters.jdbc.wrapperdatasource.checktransaction(wrapperdatasource.java:245)在org.jboss.jca.adapters.jdbc.wrappdconnection.checktransaction(wrapperdatasource.java:245)在s.jca.adapters.jdbc.wrappdconnection.prepareStatement(wrappdconnection.java:447)在org.hibernate.engine.jdbc.internal.statementPrepareImpl$5.doprepare(statementPrepareImpl.java:146)在

anone是否知道什么可能导致事务在没有任何通知的情况下被标记为状态回滚?

共有1个答案

颛孙正谊
2023-03-14

我找到真正的问题了。正如已经猜测的那样,引发了一个异常,该异常被应用程序吞并,并导致事务被设置为状态回滚。

我发布的stacktrace是一个以下错误,因为当事务已经设置为回滚(签入WrapperDataSource)时,不允许准备语句。

在将Arjuna的日志级别设置为Trace之后,我终于找到了错误。

 类似资料:
  • 问题内容: 我在@Transactional方法中提交事务时遇到问题: 当我从methodA()调用methodB()时,该方法成功通过,并且可以在日志中看到“确定”。但后来我明白了 在异常中完全缺少methodB的上下文-我想可以吗? methodB()中的某些内容将事务标记为仅回滚?我如何找到它?例如,有没有一种方法可以检查类似的东西-这样,我可以逐步检查方法并找到原因。 问题答案: 我终于明

  • 问题内容: 我在@Transactional方法中提交事务时遇到问题: 当我从methodA()调用methodB()时,该方法成功通过,并且可以在日志中看到“确定”。但后来我明白了 在异常中完全缺少methodB的上下文-我想这可以吗? methodB()中的某些内容将事务标记为仅回滚?我如何找到它?例如,是否有一种检查类似方法的方法-这样,我可以逐步检查方法并找到原因。 问题答案: 我终于明白

  • 问题内容: 我在@Transactional方法中提交事务时遇到问题: 当我从methodA()调用methodB()时,该方法成功通过,并且可以在日志中看到“确定”。但后来我明白了 在异常中完全缺少methodB的上下文-我想这可以吗? methodB()中的某些内容将事务标记为仅回滚?我如何找到它?例如,是否有一种检查类似方法的方法-这样,我可以逐步检查方法并找到原因。 问题答案: 当你将方法

  • 我在@transactional方法中提交事务时遇到问题: 当我从methodA()调用methodB()时,该方法成功传递,并且我可以在日志中看到“OK”。但我得到 异常中完全缺少methodB的上下文-我想这可以吗? methodB()中的内容将事务标记为仅回滚?我怎么才能查出来?例如,是否有一种方法来检查类似这样,我可以逐级遍历该方法并找到原因。

  • 我有这样的场景: 从IncomingMessage表中获取(读取和删除)记录 读取记录内容 在某些表中插入某些内容 如果在步骤1-3中出现错误(任何异常),请将错误记录插入OutgoingMessage表 否则,将成功记录插入OutgoingMessage表 因此步骤1、2、3、4应该在事务中,或者步骤1、2、3、5 但是当SqlCommandHandlerService.persist()抛出异

  • 我想用EclipseLink和Spring在GlassFish 4.1.1上运行一个应用程序。我的数据库是PostgreSQL。下面是我的配置。当我尝试调用/facebookDebug方法时,我得到了“javax.transaction.RollbackException:标记为回滚的事务”,这不是很好的描述。请看我的配置。一切都好吗?我可以从服务器开始添加日志,也许你会在那里找到一些东西。 坚持