Bonjour,

Le problème à été traité plus d'une fois mais j'ai rien trouvé qui réponde à mon problème donc je me permet de vous en faire part.
Je souhaite récupérer les informations de 3 tables qui sont liées les unes au autres. C'est un schema classique où une commune est dans un département qui lui meme est dans une région.

J'ai les tables suivantes qui me pose problème car j'ai ma table commune qui à une clé primaire composée mais en plus un des attributs de cette clé primaire qui référence la clé primaire de la table département.

C'est du postgreSQL comme base
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
 
CREATE TABLE "public"."sit_com_commune" (
  "com_cod_com" CHAR(3) NOT NULL, 
  "dep_cod_dep" CHAR(3) NOT NULL, 
  "com_artmin_com" VARCHAR(5), 
  "com_nccenr_com" VARCHAR(70), 
  CONSTRAINT "pk_sit_com_commune" PRIMARY KEY("dep_cod_dep", "com_cod_com"), 
  CONSTRAINT "com_dep" FOREIGN KEY ("dep_cod_dep")
    REFERENCES "public"."sit_dep_departement"("dep_cod_dep")
    ON DELETE RESTRICT
    ON UPDATE RESTRICT
    NOT DEFERRABLE
) WITHOUT OIDS;
 
COMMENT ON COLUMN "public"."sit_com_commune"."com_cod_com"
IS 'Code commune';
 
COMMENT ON COLUMN "public"."sit_com_commune"."dep_cod_dep"
IS 'Code département';
 
COMMENT ON COLUMN "public"."sit_com_commune"."com_artmin_com"
IS 'Article Commune';
 
COMMENT ON COLUMN "public"."sit_com_commune"."com_nccenr_com"
IS 'Nom Commune';
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
CREATE TABLE "public"."sit_dep_departement" (
  "dep_cod_dep" CHAR(3) NOT NULL, 
  "reg_region" CHAR(2) NOT NULL, 
  "dep_nccenr_dep" VARCHAR(70), 
  CONSTRAINT "pk_sit_dep_departement" PRIMARY KEY("dep_cod_dep"), 
  CONSTRAINT "dep_reg" FOREIGN KEY ("reg_region")
    REFERENCES "public"."sit_reg_region"("reg_region")
    ON DELETE RESTRICT
    ON UPDATE RESTRICT
    NOT DEFERRABLE
) WITHOUT OIDS;
 
COMMENT ON COLUMN "public"."sit_dep_departement"."dep_cod_dep"
IS 'Code département';
 
COMMENT ON COLUMN "public"."sit_dep_departement"."reg_region"
IS 'Code Région';
 
COMMENT ON COLUMN "public"."sit_dep_departement"."dep_nccenr_dep"
IS 'Nom département';
J'ai les 2 fichiers de mapping 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
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="i2.xxx.yyy.zzz.reference.niveau.valueobject">
 
<class name="DepartementElementReference" table="sit_dep_departement">
    <id name="codeDepartement" type="string">
        <column name="dep_cod_dep" sql-type="char(3)" unique="true"/>
    </id>
    <property name="codeRegion" type="integer">
        <column name="reg_region" sql-type="char(2)" not-null="true"/>
    </property>
    <property name="nomDepartement" type="string">
        <column name="dep_nccenr_dep" sql-type="varchar(70)" not-null="false"/>
    </property>
</class>
</hibernate-mapping>
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
 
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="i2.xxx.yyy.zzz.reference.niveau.valueobject">
    <class name="CommuneElementReference" table="sit_com_commune">
        <composide-id name="comp_id" class="communePK">
            <key-property name="codeCommune" type="string" >
                <column name="com_cod_com" sql-type="char(3)" not-null="true"/>
            </key-property>
            <key-property name="codeDepartement" type="string" >
                <column name="dep_cod_dep" sql-type="char(3)" not-null="true"/>
            </key-property>
        </composide-id>
        <property name="article" type="string">
            <column name="com_artmin_com" sql-type="varchar(5)" not-null="false"/>
        </property>
        <property name="nomCommune" type="string">
            <column name="com_nccenr_com" sql-type="varchar(70)" not-null="false"/>
        </property>
    </class>
</hibernate-mapping>
Et sur le dernier, j'ai le message d'erreur suivant que je ne comprends pas. j'ai beau regarder par rapport à la DTD des fichiers de mapping sur le site d'hibernate, je vois pas pourquoi je me fais renvoyer balader comme ca.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Severity and Description    Path    Resource    Location    Creation Time    Id
The content of element type "class" must match "(meta*,subselect?,cache?,synchronize*,comment?,tuplizer*,(id|composite-id),discriminator?,natural-id?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|array|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,resultset*,(query|sql-query)*)".
Si quelqu'un peut m'aider la dessus, parce que j'ai du mal à trouver. Merci d'avance