Salut,
J'aimerais comprendre une chose sur hibernate. Je vous explique mon problème. J'ai des objets Value et des objets instances. Les values ont une référence vers instances et les instances ont une liste de values d'ou le mapping :
value.hbm
instance.hbm
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ... <many-to-one name="instance" cascade="none"/> ....
pour sauvegarder :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <set name="values" lazy="true" batch-size="10" cascade="all-delete-orphan"> <key column="instance"/> <one-to-many class="com.server.Value"/> </set>
Quand je sauvegarde une instance il me sauvegarde les values par cascading.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 session.saveOrUpdate(instance);
En regardant le code sql je vois :
1. il fait des insertInto(...) , ça c'est normal.
2.Apres avoir inséré toutes les valeurs et instance en base, il update toutes les values qu'il vient d'insérer.
Je pense qu'il fait cela à cause des références vers les instances que contient la table Value. Mais c'est la que je trouve ça bizarre. Ne pourrait t-il pas se debrouiller pour faire un insertInto Value (...) qui contiennent tous ce qu'il faut (c'est à dire la référence vers l'instance + le reste du tuple)
Y A t-il un moyen de se passer de la phase d'update lors de la création de mes value ?
Je ne connais pas exactement le fonctionnement d'hibernate donc il y à peut etre des choses qui m'échappent mais si quelqu'un peut m'eclairer la dessus je le remercie
Partager