Bonjour,
Lorsque je save mon objet, j'obtiens l'erreur suivante :
violation de contrainte d'intégrité (BASE.FK_CLE) - clé parent introuvable
voici mes objets JAVA
mes mappings hibernates
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public Class A { private Long id; private String a_attribut1; } public Class B { private Long id; private String b_attribut1; private A b_attribut2; }
Code sur lequel j'ai une erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <hibernate-mapping > <class name="A" table="TAB_A" > <id name="id" type="java.lang.Long" column="TAB_A_ID"> <generator class="sequence"> <param name="sequence">A_SEQ</param> </generator> </id> <property name="a_attribut1" type="java.lang.String" column="Attribut1" /> </class> </hibernate-mapping > <hibernate-mapping > <class name="B" table="TAB_B" > <id name="id" type="java.lang.Long" column="TAB_B_ID"> <generator class="sequence"> <param name="sequence">B_SEQ</param> </generator> </id> <many-to-one name="b_attribut2" class="A" cascade="save-update"> <column name="TAB_A_F_ID" /> </many-to-one> <property name="b_attribut1" type="java.lang.String" column="attribut1" /> </class> </hibernate-mapping>
En fait mon hibernate essaie de sauvegarder de récupérer la clé id de A alors qu'il n'existe pas encore.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 session = HibernateUtil.currentSession(); Transaction tx = session.beginTransaction(); B b = new B(); A a = new A(); b.setB_attribut1("test"); a.setA_attribut1("test2"); b.setB_attribut1(a); session.save(b); tx.commit(); session.close();
comment faire pour que hibernate enregistre mon objet avant mon objet b.
Partager