Bonjour à tous,
J'aurais besoin d'aide, afin de gérer la concurrence optimiste d'Hibernate. J'ai fait le tour de la documentation officielle, ainsi que d'autre docs diverses, malheureusement, je ne trouve pas réponse à mes questions. Vous êtes donc mon dernier recours! 
Mise en situation:
Un projet utilisant Spring et Hibernate. Nous avons des objets mappés à des tables Oracle par Hibernate en utilisant des annotations. Voici un exemple:
	
	1 2 3 4 5 6 7
   |  
@Entity
@Table(name = "MEDECIN", uniqueConstraints = {@UniqueConstraint(columnNames = {"NO_PERMIS"})})
 
public class Medecin extends AbstractMedecin {
(...)
} | 
 Dans celle-çi, conformément à la procédure expliquée (très mal) sur le site d'Hibernate, j'ai ajouté un champ VERSION dans la table MEDECIN, et aussi dans mon objet, avec les annotations pour la concurrence optimiste d'Hibernate:
	
	1 2 3 4
   |  
@Version
@Column(name="VERSION")
protected Integer version;  | 
 Dans ma base de donnée Oracle, le champ VERSION est "INTEGER NOT NULL, DEFAULT 0". 
Le problème, c'est qu'Hibernate n'incrémente pas du tout ce champ lorsqu'une mise à jour est effectuée sur l'objet mappé. Donc la gestion de concurrence optimiste ne peut pas fonctionner.
Même en spécifiant:
	
	@org.hibernate.annotations.Entity(optimisticLock = org.hibernate.annotations.OptimisticLockType.VERSION)
 ...au debut de ma classe mappé, ça ne fonctionne tout simplement pas (pas d'incrémentation par Hibernate).
Merci de me diriger vers des pistes. Le principe semble relativement simple... il y a certainement quelque chose qui m'a échappé. 

 
			
		
Partager