繁体   English   中英

休眠事务导致mysql innodb中的提交和后续回滚

[英]hibernate transaction causes commit and subsequent rollback in mysql innodb

我正在使用Hibernate 3.3.2和mysql 5.0.77(innodb引擎)。 每当我执行任何sql操作select,update等时,都会在mysql结束时引起回滚。(通过com_rollback列中的query,我看到它每次都递增)。 我在休眠事务中执行这些操作。 Hibernate不会抛出任何异常,并且可以正常完成而没有任何错误。当我在mysql端启用常规日志文件时,我看到每个事务都发生以下步骤:set autocommit = 0 execute query(select,insert,update)commit rollback autocommit = 1个

我不明白为什么提交后在MySQL端发生回滚。 应用程序日志和mysql日志均无错误。 :(。

检查您的休眠刷新模式或类似的东西。 看看我在这里写的内容: 从HibernateTransactionManager迁移到JpaTransactionManager

请注意,我谈到了spring @Transactionnal(read-only = true),它不仅将刷新模式设置为从不。 http://www.codeinstructions.com/2009/04/read-only-transactions-with-spring-and.html

如果该事务被标记为只读,那么Spring会将Hibernate Session的刷新模式设置为FLUSH_NEVER,并将JDBC事务设置为只读。

我不知道你是否正在使用弹簧,但也许是。 如果您处于永不刷新模式的休眠会话,则可能存在该问题。


如果这不是问题,则可以尝试在以下位置的jdbc驱动程序中放置一个断点:

Connection.setReadOnly(boolean)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM