Bonjour à tous,

Tout d'abord, les technologies Spring + Hibernate sont assez nouvelles pour moi donc j'espère être assez clair afin que vous puissiez m'aider à résoudre mon problème.

J'ai un objet Personne (correspondant à la table personne dans ma base de données).

Le service PersonneManager contient la méthode suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
@Transactional(readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}, isolation=Isolation.SERIALIZABLE)
public void enregistrerPersonne(Personne personne) {
personneDao.enregistrerPersonne(personne);
}
La classe PersonneDao contient la méthode suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
public void enregistrerPersonne(Personne personne) {
getSessionFactory().saveOrUpdate(personne);
}
Dans mon application, j'ai une vue permettant de modifier l'état civil d'une personne. Imaginons que deux utilisateurs chargent la même personne dans cette vue, la modifient puis lancent l'enregistrement. Je voudrais que lorsque le second utilisateur enregistre la vue, le fait que la personne a déjà été modifiée par un autre utilisateur soit détecté et que l'enregistrement du second utilisateur ne soit pas réalisé pour ne pas écraser les modifications faites par le premier utilisateur.

Je pensais que le fait d'utiliser isolation=Isolation.SERIALIZABLE serait suffisant mais apparemment ce n'est pas le cas.

Merci d'avance pour votre aide.

Cordialement,