Nous avons un système dans lequel nous devons utiliser le verrouillage pessimiste dans une entité. Nous utilisons Hibernate, donc nous utilisons LockMode.UPGRADE. Cependant, il ne se verrouille pas."SELECT ... FOR UPDATE" ne fonctionne pas pour Hibernate et MySQL
- Les tables sont InnoDB
- Nous avons vérifié que le verrouillage fonctionne correctement dans la base de données (5.0.32), donc ce bug http://bugs.mysql.com/bug.php?id=18184 semble y avoir aucun problème.
- Nous avons vérifié que datasource inclut le paramètre
autoCommit = false
. - Nous avons vérifié que le hibernation SQL (version 3.2) génère inclut "FOR UPDATE".
Merci,
Nous avons trouvé le même problème dans les forums Hibernate, https://forum.hibernate.org/viewtopic.php?f=1&t=996902, mais il n'y a pas de réponses. –
Comment dire que ça ne bloque pas? et puisque hibernate a généré la requête appropriée, le problème est dans la base de données je suppose. – Bozho
Parce que le verrouillage pessimiste est utilisé pour générer une séquence trasactionnelle et les valeurs de duplicaple sont généralisées. L'utilisation du même code SQL dans une session interactive est effectivement verrouillée, il semble donc y avoir un problème dans la manière dont la connexion est effectuée ou la session gérée. –