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:
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:
<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:
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.