Mise en veille prolongée (JPA): comment gérer StaleObjectStateException lorsque plusieurs objet a été modifié et engagée

Considérer le scénario:
Un Db transaction passer plus d'une rangée de tables différentes avec la gestion des versions.

Par exemple:
Un shopLists et des produits. Où un shopList peut contenir des produits (avec leur montant dans la shoplist) et les produits ont leur stock actuel.

Quand j'ai insérer ou modifier un shopList, je veux le stock de ces produits dans le shopList être mis à jour pour maintenir le stock de consistant.

Pour ce faire, j'ai ouvert une transaction, insertion/mise à jour le shopList, mise à jour des stocks pour chaque produit (delta), puis de valider la transaction. Pas grand-chose jusqu'à maintenant.

Cependant, d'autres utilisateurs peuvent avoir mis à jour un ou plusieurs des produits en commun. Ou même mis à jour le shopList lui-même. Dans les deux cas, je voudrais obtenir un StaleObjectStateException lors de la validation de la transaction.

Question est: est-il un moyen pour déterminer la table qui a causé la StaleObjectStateException?

Dans le cas où le produit a provoqué l'exception, j'ai pu actualiser toutes les saisons des produits de la DB et réappliquez le stock des deltas. Et c'est bien.
Dans le cas où le shopList a provoqué l'exception, il serait préférable de simplement signaler le problème à l'utilisateur, de sorte qu'il pourrait recommencer.

Merci beaucoup pour votre aide.

OriginalL'auteur Marcus | 2011-01-29