Bonjour à tous.

Je suis nouveau à Hibernate.

J'ai deux Tables très basiques et, l'une référence l'autre par clé étrangère.

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
 
 
<class name="Tab" table="tab" schema="public">
        <id name="id" type="int">
            <column name="id" />
            <generator class="assigned" />
        </id>
        <many-to-one name="test" class="Test">
            <column name="test" />
        </many-to-one>
</class>
 
<class name="Test" table="test" schema="public">
        <id name="id" type="int">
            <column name="id" />
            <generator class="assigned" />
        </id>
        <property name="text" type="string">
            <column name="text" />
        </property>
        <set name="tabs" inverse="true">
            <key>
                <column name="test" />
            </key>
            <one-to-many class="Tab" />
        </set>
</class>
Je pense qu'il n'y a pas de problème de mapping ni dans mes classe persistantes qui sont les suivantes:

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
 
public class Tab  implements java.io.Serializable
 private int id;
 private Test test;
 
   public Tab() {
   }
 
//code complet avec les getter et les constructeurs
 
   public Test getTest() {
       return this.test;
   }
 
   public void setTest(Test test) {
       this.test = test;
   }
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
 
public class Test  implements java.io.Serializable {
 
 
    private int id;
    private String text;
    private Set tabs = new HashSet(0);
 
   public Test() {
   }
 
  .....
 
   public Set getTabs() {
       return this.tabs;
   }
 
   public void setTabs(Set tabs) {
       this.tabs = tabs;
   }
ce bout de code que j'exécute dans un Main m'insère très une entrée dans Test mais pas les objets associés à savoir les Tab. (et inversement ça marche sans problème).

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
 
	                session = HibernateUtil.currentSession();
			Transaction tx = session.beginTransaction();
 
			Tab tab = new Tab(11);
			Set tabs = new HashSet<Tab>();
			tabs.add(tab);
 
			//ceci ne marche pas
			Test test = (Test)session.load(Test.class, 30); 
			test.setTabs(tabs);
 
			//et cela ne marche pas non plus.
			Test test2 = (Test)session.load(Test.class, 30);
			test2.getTabs().add(tab);
			session.saveOrUpdate(test2);
 
			session.flush();
			tx.commit();
			HibernateUtil.closeSession();
Il n'y pas d'erreurs d'exécution.
Merci de m'aider à comprendre d'ou vient le problème.