Bonjour,

Nous avons actuellement une table mise à jour par deux process différents. Cette table est définie avec un mapping "optimistic-lock" (une colonne de version dans la table).

Sur un update() + flush() dans un des process, il arrive que l'exception "StaleObjectStateException" soit levée: normal car mise à jour par l'autre process.

J'essaye alors, dans ce cas, de faire un refresh() de l'objet (qui remonte les informations correctes de la base de données y compris le numéro de version), de le mettre à jour après récupération des modifications éventuelles et de le sauver de nouveau par un update(). Mais l'exception "StaleObjectStateException" est de nouveau levée.


///
homme.setAge(42);
session.update(homme);
try
{
session.flush();
}
catch (StaleObjectStateException e)
{
session.refresh(homme);
/*
Récupération des valeurs éventuellement importantes sur homme faites par l'autre process
*/
homme.setAge(42);
session.update(homme);
session.flush();
}
///


Est-ce que j'ai manqué quelque chose ou pas compris le fonctionnement du refresh() /update()?

Merci d'avance