Bonjour,
Après avoir parcouru la doc, je n'ai pas trouvé (ou pas compris) comment mettre à jour des objets hérités. Je m'explique :
B hérite de A
C hérite de A
Lorsque j'insère un objet dont la clé n'existe pas en base, cela fonctionne, j'ai une ligne dans la table A, une dans la table B (ou C suivant l'objet).
Je réalise cette opération en faisant un :
session.save(A)
Lorsque je récupère ces objets, pas de pb non plus : avec un select je récupère bien des objets de types B ou C
J'ai deux méthodes pour mettre à jour mes données :
DBModel.update(A)
A = DBModel.get(cle)
Bref, ca roule, sauf que ! Lorsque je veux mettre à jour un objet qui existe déjà en base : par exemple changer un objet de type B vers C (l'objet A dont héritait B reste le même pour C)
la méthode update ne modifie rien en base.
- dans la console SQL, j'ai bien une requête insert dans la table C et dans la table A, mais rien ne se passe (peut être à cause des contraintes de la base entre les tables A, B, C)
- quand j'essaye de faire un delete avant le save (pour nettoyer l'état en base) j'ai une exception, un objet avec identifiant existe déjà. (En effet :)
- peut être dois-je utiliser le load (à ce moment j'ai l'id unique de l'objet)
mais n'est-ce pas déjà fait par le select précédent ?
Pour résumé : un objet hérité qui est déjà en base n'est pas mis à jour lorsque le type hérité change
Avez-vous déjà rencontré ce cas ?
Vous faut-il plus d'information concernant les mappings, objet & autres ?
|