Bonjour,

J'ai une association n-n bidirectionnelle entre une classe Concert et une classe Interprete. Les commandes SQL ci-dessous montrent la structure de la base de données correspondante :

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
 
create sequence seq_concert increment 1 minvalue 1 start 1;
 
create table concert (
	code_concert integer DEFAULT nextval(('public.seq_concert'::text)::regclass),
	nom_concert character varying(128) NOT NULL,
	date_concert date NOT NULL,
	CONSTRAINT cle_concert PRIMARY KEY (code_concert)
);
 
create sequence seq_interprete increment 1 minvalue 1 start 1;
 
create table interprete (
	code_int integer DEFAULT nextval(('public.seq_interprete'::text)::regclass),
	nom_int character varying(128) NOT NULL,
	CONSTRAINT cle_int PRIMARY KEY (code_int)
);
 
 
create table participation_concert (
	code_int integer NOT NULL,
	code_concert integer NOT NULL,
	CONSTRAINT cle_participation_concert PRIMARY KEY (code_int, code_concert)
);
L'association entre les deux tables se traduit donc par la table association 'participation_concert'. Dans mon application JAVA, j'ai implémenté deux classes. La classe Concert contient un Set<Interprete> et la classe Interprete contient un Set<Concert>. Le mapping de la classe Concert 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
 
<class name="core.Concert" table="concert" lazy="false">
	<id name="code" type="integer" column="code_concert">
		<generator class="native">
			<param name="sequence">seq_concert</param>
		</generator>
	</id>
	<property name="nom" type="string" column="nom_concert"/>
	<property name="date" type="date" column="date_concert"/>
	<set name="interpretes" inverse="true" table="participation_concert"  lazy="false">
    	<key column="code_concert" />
    	<many-to-many column="code_int" class="core.Interprete"/>
    </set>
</class>
Pour la classe Interprete, c'est à peu près pareil.

Si je crée un concert et le relie à deux interprètes. Le problème apparaît lorsque j'enregistre ce concert. Aucun enregistrement de type participation_concert n'est crée dans la table. Du coup, si je recharge le même concert, je ne recharge pas en même temps les deux interprètes. Est-ce un problème dans le mapping ? ou est-ce que je dois enregistrer "à la main" les enregistrements de la table participation_concert ?

Merci d'avance. Et n'hésitez pas à me demander d'autres explications si celle ci-dessus ne sont pas claires.

T2!