[Hibernate] Problème de suppression
Bonjour,
Je rencontre un petit problème avec Hibernate. En bref, j'ai une classe nommée X, qui est abstraite, et dont héritent trois classes : X1, X2, X3.
J'ai deux classes Voiture et Maison, qui peuvent contenir un certain nombre de champs de type X. Je ne fais donc pas un mapping avec une simple property.
Les mappings sont donc du style :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| <class name="Voiture" table="VOITURE" lazy="false" abstract="true" mutable="true" polymorphism="implicit" dynamic-update="false" dynamic-insert="false" select-before-update="false" optimistic-lock="version">
<id name="idHibernate">
<column name="ID_VOITURE" not-null="true"/>
<generator class="native" />
</id>
<many-to-one name="_alpha" class="X" unique="true" cascade="all,delete" update="true" insert="true" optimistic-lock="true" not-found="exception" embed-xml="true">
<column name="FK_ALPHA" not-null="true"/>
</many-to-one>
<many-to-one name="_beta" class="X" unique="true" cascade="all,delete" update="true" insert="true" optimistic-lock="true" not-found="exception" embed-xml="true">
<column name="FK_BETA" not-null="true"/>
</many-to-one>
</class>
Pour la classe X, j'ai fait un truc tout bête qui me parait bon:
<class name="X" table="X" lazy="false" abstract="true" mutable="true" polymorphism="implicit" dynamic-update="false" dynamic-insert="false" select-before-update="false" optimistic-lock="version">
<id name="idHibernate">
<column name="ID_X" not-null="true"/>
<generator class="native" />
</id>
<joined-subclass name="X1" table="X1" lazy="false" dynamic-update="false" dynamic-insert="false" select-before-update="false">
<key on-delete="noaction">
<column name="X_ID_X1"/>
</key>
<property name="_parametre" unique="false" optimistic-lock="true" lazy="false" generated="never">
<column name="PARAMETRE" not-null="true"/>
</property>
</joined-subclass>
</class> |
Donc voilà, tout va bien, sauf qu'en Java, je fais la chose suivante :
- Création d'une voiture, avec _alpha qui est de type X1.
- Puis je crée un nouvel objet de type X1, et je fais :
- voiture._alpha = nouvelObjet.
Hibernate est content, et lorsque je fais un update, il ne crie pas. Seulement voilà, en regardant la base, je m'aperçois qu'il reste un record correspondant à l'ancien objet de type !
Ma question est donc la suivante : est on obligé d'éviter de construire un nouvel objet, ou y a t il moyen de corriger le problème en changeant mon mapping ?
D'avance merci =p