Bonjour,
Je rencontre un problème étrange lorsque j'implémente la concurrence optimiste avec un champ VERSION.
Je spécifie, au début de ma classe persistante:
Code:
@org.hibernate.annotations.Entity(optimisticLock = org.hibernate.annotations.OptimisticLockType.VERSION)
Et j'ai ajouté un champ VERSION dans ma table de BD et aussi dans ma classe persistante:
Code:
@Version
@Column(name = "VERSION", updatable = true, nullable = false)
public Integer getVersion() {
return this.version;
}
public void setVersion(Integer pVersion) {
this.version = pVersion;
}
Le problème est qu'Hibernate transforme les UPDATE en INSERT lorsque je gère la concurrence de cette façon. Pour une modification d'objet persistant, lorsque l'on appel saveOrUpdate(), la modification devient un nouvel enregistrement. Il en résulte une erreur d'ORACLE de contrainte d'intégrité (c'est normal, la clé unique se retrouvant 2 fois inséré).
Merci de me guider vers une piste. Nous utilisons les Annotations dans les classes persistantes directement.