Bonjour,

Je tente d'utiliser le verrouillage pessimiste sur une entité avec la méthode find à partir du gestionnaire d'entités, avec l'option LockModeType.PESSIMISTIC_WRITE. Mais ça ne semble pas fonctionner du tout.

Le mode pessimiste est censé bloquer l’entité en écriture, donc tant que je n'ai pas bouclé la transaction avec un Commit un autre processus ne devrait pas pouvoir modifier la donnée si j'ai bien compris.

Pourtant en testant avec deux navigateurs je charge un formulaire avec l'entités dans le premier puis la même entité dans le second ( cette entité est conservé dans un managedBean de portée view ) et je peux quand même valider le formulaire dans le second malgré que l'entité est censé être locké dans le premier processus.

Étant donné que j'utilise l'annotation @Version dans mes entités au moment ou je valide le formulaire dans l'un ou l'autre processus la version est incrémenté et la seconde soumission de formulaire ne fonctionne pas vue que la version qu'il utilise coté serveur est désormais plus ancienne, donc le verrouillage optimiste fonctionne lui très bien ce qui est déjà pas mal...

Pour préciser la manière donc je procédè je récupère d'abord une liste d'entités à l'aide d'une requête JPQL ( sans indiquer de verrou particulier donc par défaut en mode optimiste ). Cette liste est ensuite afficher dans un composant Datatable, lorsque je veux charger le formulaire, je récupère l'id d'une entités de la liste et je procède à un find avec un lock pessimiste pour récupérer l'entité cette fois ci verrouillé. Cette entités est conservé le temps de la vue.

J'utilise JTA comme mode de transaction donc je ne peux pas les gérer moi même contrairement en mode RESOURCE_LOCAL est ce du à cela ?

La version de l'ORM que j'utilise est eclipselink 2.5.1.

Merci d'avance.