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 :
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
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) );
Pour la classe Interprete, c'est à peu près pareil.
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>
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!
Partager