Question

Mon modèle:

 public class Father {
  Set<Son> sons = new HashSet<Son>();
  String name = null;
  Date lastSonModifyDate = null;
  // ... other fields and setters/getters
 }
 public class Son {
  Father father = null;
  String name = null;
  Date lastModifyDate = null;
  // ... other fields and setters/getters
 }

Exemple d'utilisation:

  1. Il est DB un objet Father avec un objet Son associé (bidir).
  2. charge du DB père.
  3. Mise à jour champ de nom pour le père.
  4. champ Nom de mise à jour pour le fils.
  5. Persistent père.

Mon intercepteur détectez des mises à jour de père (onFlushDirty). exécute les onFlushDirty pour le fils. Dans ce cas, je mets à jour son.lastModifyDate et aussi father.lastSonModifyDate .

Lors de l'exécution se termine, toutes les mises à jour sont conservés, sauf father.lastSonModifyDate . Je pense que c'est parce que le père est en session et a été mis à jour avant le fils, de sorte que cette entité remplace les modifications effectuées dans la méthode onFlushDirty pour l'entité fils.

Comment pourrais-je obtenir ma marque (set de intercepteur fils lastSonModifyDate père)?

Merci.

Était-ce utile?

La solution

Vous ne pouvez pas. onFlushDirty () est invoqué pour les éléments de collection après il a été invoqué pour le propriétaire et l'action de mise à jour (le cas échéant) a déjà été prévu.

Y at-il des raisons pour lesquelles vous ne pouvez pas faire tout ce qui précède dans votre OAC au lieu de compter sur des intercepteurs? Ou au niveau de la base de données (cartographie des propriétés de lastModifyDate tel que généré)?

Autres conseils

vous devez remplacer onCollectionUpdate pour les entités qui en cascade option. ceci est appelé avant son être prévu.

~ hourras

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top