我们的应用程序是一个Java-GWT应用程序,它广泛使用Guice-Persist和Guice-Servlet。我们使用Guice-Persist的session-per-HTTPRequest功能从未出现过问题,这与Warp-persist最初使用的功能类似。
我们根据文档通过PersistFilter类过滤我们的webapp。我们的persistence.xml文件根据Guice文档here具有transaction-type =“RESOURCE_LOCAL”。
现在由于一些奇怪的原因,我们的PROD环境显示错误
“这个线程的工作已经开始。看起来你已经两次调用UnitOfWork.begin()而没有对它之间的end()进行平衡调用。”
看起来Guice-Persist不支持嵌套的工作单元。 LINK
我们最近也从hibernate 3.6.3.Final转到4.1.4.Final。不确定他是否会与guice有某种不相容......
在这一点上,我们完全不知道为什么会发生这种情况。
答案 0 :(得分:3)
当Hibernate隐式打开事务时,我遇到了这种症状,因为我忘了在最外面的逻辑事务括号中添加@Transaction注释。
要确定问题,请在数据库层以及begin()和end()中设置断点,以发现在没有现有事务的情况下发生持久性(读取或写入无关紧要)的情况。
答案 1 :(得分:1)