Je précise ma question : j'ai du nouveau
En fait, lors de l'import de pere, les lignes ont bien été prises en compte.
voila les traces SQL de hibernate :
// prend les séquences générées par la base de données pour les id du pere et de l'enfant
Hibernate: select SEQ_PERE_ID.nextval from dual
Hibernate: select SEQ_ENFANT_ID.nextval from dual
// Insertion dans la base de données lors du flush (inclus dans la méthode commit)
Hibernate: insert into PERE (champ1,champ2,...) values (?, ?, ...)
Hibernate: insert into ENFANT (champ1,champ2,...) values (?, ?, ...)
Donc ca, c'est le déroulement normal. Nikel SAUF QUE :
Lors de l'insertion de l'enfant dans la bd, j'ai un erreur de contrainte d'intégrité référentielle violée parce que hibernate n'a pas positionné le nouvel ID du pere (fourni par la séquence) dans l'ENFANT: Dans ENFANT, PERE_ID fait référence à un pere qui n'existe pas ou si par hasard il y en a un qui correspond à cet id, ce n'est pas le bon.
Ma question :
Savez vous si hibernate est sencé positionner l'ID du pere fourni par la bd dans l'enfant. Si oui quelles sont les options de config ou quelles sont les instructions à faire pour que ca se fasse. J'ai essayé de jouer avec reverse/inverse, ou le champ cascade dans les fichiers de
mapping.
Sinon, est ce que c'est à nous de les positionner à la main, enfant apres enfant ? Si oui quelle est la technique la plus simple.
Merci d'avance
|