"SELECT ... FOR UPDATE"不适用于Hibernate和MySQL

And*_*uez 5 mysql hibernate locking pessimistic

我们有一个系统,我们必须在一个实体中使用悲观锁定.我们正在使用hibernate,所以我们使用LockMode.UPGRADE.但是,它没有锁定.

  • 表格是InnoDB
  • 我们检查过锁定在数据库中是否正常工作(5.0.32),所以这个错误http://bugs.mysql.com/bug.php?id=18184似乎没有问题.
  • 我们检查过数据源包含autoCommit = false参数.
  • 我们检查过SQL hibernate(版本3.2)生成的包括"FOR UPDATE".

谢谢,

小智 2

我遇到了非常相似的事情。我在 Spring 中使用 @Transactional 注释,并且发出更新选择,但未获取更新锁(我有其他线程发出相同的更新选择,并已验证它们不会阻塞一把锁)。当我显式获取 Hibernate 会话并发出 beginTransaction 并在代码块周围提交时,一切正常。

这并没有给我带来 Spring 容器管理事务的温暖和模糊的感觉。