Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jakarta ee 我如何确定JPA/eclipselink/J2EE为何向DB发出回滚?_Jakarta Ee_Jpa_Eclipselink - Fatal编程技术网

Jakarta ee 我如何确定JPA/eclipselink/J2EE为何向DB发出回滚?

Jakarta ee 我如何确定JPA/eclipselink/J2EE为何向DB发出回滚?,jakarta-ee,jpa,eclipselink,Jakarta Ee,Jpa,Eclipselink,我正在追踪一个问题,在这个问题中,我看到SQL语句在事务中的数据库日志中运行,然后看到事务回滚 这在Oracle和Postgres上都会发生,但仅在某些安装上发生。应用程序本身是一个使用JPA和Eclipselink的标准J2EE应用程序 我没有看到任何异常,代码也没有明确放弃和回滚 到目前为止,我所能做的最好的事情就是找到以下日志语句: [#|2011-09-26T11:30:56.052-0700|FINER|sun-appserver2.1|org.eclipse.persiste

我正在追踪一个问题,在这个问题中,我看到SQL语句在事务中的数据库日志中运行,然后看到事务回滚

这在Oracle和Postgres上都会发生,但仅在某些安装上发生。应用程序本身是一个使用JPA和Eclipselink的标准J2EE应用程序

我没有看到任何异常,代码也没有明确放弃和回滚

到目前为止,我所能做的最好的事情就是找到以下日志语句:

    [#|2011-09-26T11:30:56.052-0700|FINER|sun-appserver2.1|org.eclipse.persistence.session.file:/opt/glassfish/domains/domain1/applications/j2ee-apps/myapp/myapp-ejb_jar/_myapp-ejbPU.transaction|_ThreadID=18;_ThreadName=httpSSLWorkerThread-8888-2;ClassName=null;MethodName=null;_RequestID=e78196
09-bf2e-4026-8cbb-87fdd047c5eb;|begin unit of work flush|#]
它与postgres日志中的回滚完全同时发生:

appuser @ dbname: 102012/7/67486 2011-09-26 18:30:56.052 UTC - LOG:  execute S_3: ROLLBACK
请注意,DB在UTC上,而应用程序在Pacific上

正在使用带有
@TransactionAttribute(TransactionAttributeType.SUPPORTS)

我正在与日志记录级别和调试器一起工作,以查看是否可以找到引发此问题的异常


如何找出导致回滚的代码?

您可以使用EclipseLink启用登录finest来调试问题。 将记录EclipseLink中发生的任何异常

看,,


还要确保没有抛出错误导致SessionBean回滚。

获取eclipselink发送到数据库的SQL,并直接在数据库中运行该SQL。在我看来,更多的是数据库问题,但我可能错了。但是通过尝试这个来消除它。沙泽布-尝试了那个。数据库日志显示了调用回滚的内容。答案是一个很好的一般性答案。我们的具体问题是在
finally
子句中有一个显式回滚调用,该子句没有写入我们的应用程序日志。