Bonjour,
Je n'arrive pas à faire marcher un exemple tout simple avec hibernate.
J'ai remarqué que les tables sont mises à jour mais pas la table de jointure.
Je poste mon petit code :

J'ai une classe Auteur :
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
 
        private Long auteurId;
	private String nom;
	private String prenom;
 
	private Set<Livre> livres = new HashSet<Livre>();
 
	public Auteur() {
 
	}
 
	public Long getAuteurId() {
		return auteurId;
	}
 
	public void setAuteurId(Long auteurId) {
		this.auteurId = auteurId;
	}
 
	public String getNom() {
		return nom;
	}
 
	public void setNom(String nom) {
		this.nom = nom;
	}
 
	public String getPrenom() {
		return prenom;
	}
 
	public void setPrenom(String prenom) {
		this.prenom = prenom;
	}
 
	public Set<Livre> getLivres() {
		return livres;
	}
 
	public void setLivres(Set<Livre> livres) {
		this.livres = livres;
	}
 
	@Override
	public String toString() {
		return "Auteur [auteurId=" + auteurId + ", nom=" + nom + ", prenom=" + prenom + "]";
	}
J'ai une classe Livre :
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
28
29
30
31
32
33
34
35
36
37
38
39
40
 
public class Livre {
 
	private Long livreId;
	private String titre;
        private Set<Auteur> auteurs = new HashSet<Auteur>();
 
 
	public Livre() {
 
	}
 
	public Long getLivreId() {
		return livreId;
	}
 
	public void setLivreId(Long livreId) {
		this.livreId = livreId;
	}
 
	public String getTitre() {
		return titre;
	}
 
	public void setTitre(String titre) {
		this.titre = titre;
	}
 
	public Set<Auteur> getAuteurs() {
		return auteurs;
	}
 
	public void setAuteurs(Set<Auteur> auteurs) {
		this.auteurs = auteurs;
	}
 
	@Override
	public String toString() {
		return "Livre [titre=" + titre + ", auteurs=" + auteurs + "]";
	}
Mon Auteur.hbm.xml :

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
 
<hibernate-mapping>
	<class name="model.Auteur" table="AUTEUR">
		<id name="auteurId" column="AUTEUR_ID">
			<generator class="increment" />
		</id>
		<property name="nom" column="NOM" />
		<property name="prenom" column="PRENOM" />
 
		<set name="livres" table="AUTEUR_LIVRE" inverse="true" lazy="false" cascade="all">
			<key column="AUTEUR_ID"></key>
			<many-to-many column="LIVRE_ID" class="model.Livre" ></many-to-many>
		</set>
	</class>
</hibernate-mapping>
et Livres.hbm.xml est le suivant :

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
 
 
<hibernate-mapping>
	<class name="model.Livre" table="LIVRE">
		<id name="livreId" column="LIVRE_ID">
			<generator class="increment" />
		</id>
		<property name="titre" column="TITRE" />		
 
	<set name="auteurs" table="AUTEUR_LIVRE" lazy="false" cascade="all">
		<key column="LIVRE_ID" not-null="true" ></key>
		<many-to-many class="model.Auteur">
			 <column name="AUTEUR_ID" not-null="true"/>
		</many-to-many>		
	</set>
 
	</class>
</hibernate-mapping>
ma classe de 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 void test() {
 
		Set<Livre> livres = new HashSet<Livre>();
		Auteur aut = new Auteur();
 
		aut.setPrenom("Victor");
		aut.setNom("Hugo");
 
		Livre liv1 = new Livre();
		liv1.setTitre("Le magnifique 1");
 
		Livre liv2 = new Livre();
		liv2.setTitre("Le magnifique 2");
 
		livres.add(liv1);
		livres.add(liv2);
 
		aut.setLivres(livres);	
		dao.enregistrerAuteur(aut);
la fonction enregistrerAuteur (Auteur aut) est la suivante :
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
 
public void enregistrerAuteur(Auteur auteur) {
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction tx = session.getTransaction();
 
		try {
			tx.begin();
			session.save(auteur);
			tx.commit();
		} catch (HibernateException  e) {
			tx.rollback();
			System.out.println(e.getMessage());
		} finally {
			if (session != null) {
				session.close();				
			}
		}
 
	}
Dans la table de jointure AUTEUR_LIVRE il n'y a pas de lignes.

Je vous remercie par avance :