Java 播放2.5-@事务性只读被忽略?
我有一个Java Play 2.5应用程序,我有一个标记为只读的事务(在控制器级别): (这是play.db.jpa.Transactional注释) 因此,如果我打开hibernate事务的日志记录:Java 播放2.5-@事务性只读被忽略?,java,hibernate,playframework,Java,Hibernate,Playframework,我有一个Java Play 2.5应用程序,我有一个标记为只读的事务(在控制器级别): (这是play.db.jpa.Transactional注释) 因此,如果我打开hibernate事务的日志记录: <logger name="org.hibernate.engine.transaction" level="TRACE"/> 然而,我有一个问题-它不是只读的!我添加了一些修改对象的代码(obj.setField(“changed value”)),并在事务结束时将其保存到数据
<logger name="org.hibernate.engine.transaction" level="TRACE"/>
然而,我有一个问题-它不是只读的!我添加了一些修改对象的代码(obj.setField(“changed value”)),并在事务结束时将其保存到数据库中
我期待一个异常,告诉我事务是只读的,无法提交
其他信息:Java Play 2.5.10、Hibernate 5(5.2.6)和PostgreSQL作为DB。因此,这似乎是因为控制器类本身用@Transactional注释,方法用@Transactional(readOnly=true)注释 不知何故,类注释覆盖了方法注释。在我看来,这似乎不符合逻辑,但在实践中,情况似乎是这样的:一旦我从类级别删除了@Transactional,它就工作得很好
<logger name="org.hibernate.engine.transaction" level="TRACE"/>
019-12-03 23:42:23,754 [debug] from org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator in main - No JtaPlatform was specified, checking resolver
2019-12-03 23:42:23,755 [debug] from org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformResolverInitiator in main - No JtaPlatformResolver was specified, using default [org.hibernate.engine.transaction.jta.platform.internal.StandardJtaPlatformResolver]
2019-12-03 23:42:23,766 [debug] from org.hibernate.engine.transaction.jta.platform.internal.StandardJtaPlatformResolver in main - Could not resolve JtaPlatform, using default [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2019-12-03 23:58:46,769 [debug] from org.hibernate.engine.transaction.internal.TransactionImpl in application-akka.actor.default-dispatcher-5 - begin
2019-12-03 23:58:46,878 [error] from application in application-akka.actor.default-dispatcher-5 - Transaction: org.hibernate.engine.transaction.internal.TransactionImpl@3d505ddd[transactionCoordinator=org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl@89a1241,exceptionConverter=org.hibernate.internal.ExceptionConverterImpl@76f0443c,transactionDriverControl=org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl@49f1518a]
2019-12-03 23:59:27,638 [debug] from org.hibernate.engine.transaction.internal.TransactionImpl in application-akka.actor.default-dispatcher-5 - committing