Mapping d'association bidirectionnelle
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:
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:
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!