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
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;
}
mes mappings hibernates
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>
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
 
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();
En fait mon hibernate essaie de sauvegarder de récupérer la clé id de A alors qu'il n'existe pas encore.

comment faire pour que hibernate enregistre mon objet avant mon objet b.