[Hibernate]

Résolu
cs_lookthat Messages postés 1 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 10 juillet 2009 - 10 juil. 2009 à 15:15
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 - 10 juil. 2009 à 15:48
Bonjour à tous,

J'ai un petit soucis avec Hibernate que je n'arrive pas à résoudre. Explication :
J'ai deux classe abstraite A1 et A2 qui hérite toutes deux d'une classe abstraite A.
Ma base de donnée comprend une table A qui contient toutes les données à la fois de la classe A1 et A2 ainsi que celle de la classe mère A.
Pour mapper les classes, j'utilise un attribut dans la table comme discriminant.

J'aimerais pouvoir changer le type d'objet (passer du type A1 à A2 et inversement) sans avoir à copier les valeur de l'ancien objet dans un nouveau avant de le supprimer afin de garder le même ID.

voici mon schéma :

<class abstract= "true" name="A" table="A"> <generator class="identity"></generator> <discriminator column ="type" type="string"><many-to-one name="division" class="Division" column="id_division"><many-to-one name="departement" class="Departement" column="id_departement"><many-to-one name="parent" class="A" column="id_parent"><subclass name="A1" discriminator-value="a1">

</subclass><subclass name="A2" discriminator-value="a2">

</subclass></many-to-one></many-to-one></many-to-one>

</discriminator></class>

1 réponse

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
10 juil. 2009 à 15:48
Salut,

hum, changer le type d'un objet, je trouve ça étrange conceptuellement. Si tu as vraiment ce besoin, je pense qu'il faut que tu revois ton modèle objet ou alors tes classes A1 et A2 ne sont pas différentes. En tout cas il n'est pas possible de transformer un objet d'un type en un autre sans en recréer un.

Bref, si c'est juste pour garder le même ID, il te suffit de gérer la clé primaire manuellement. Quand tu crées ton nouvel objet, tu recopies la valeur de la clé et tu supprimes l'ancien.
Ou alors tu effectues des modifs en base en sql sans passer par hibernate.
3
Rejoignez-nous