bonsoir,
j'ai une table qui fait reference à elle meme c'est à dire elle contient une clé etranger qui fait reference à la clé primaire.
le probleme que j'ai c'est que je sais pas comment mapper ça en hibernate.
bonsoir,
j'ai une table qui fait reference à elle meme c'est à dire elle contient une clé etranger qui fait reference à la clé primaire.
le probleme que j'ai c'est que je sais pas comment mapper ça en hibernate.
Hibernate sais gérer ce genre de références circulaire.
cela dépend du type de relation (one-to-many, one-to-one...)
Voici un exemple avec une table catégorie :
et le mapping hibernate associé avec une relation one-to-one vers un parent et many-to-many vers des enfants (c'est seulement un exemple) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 CREATE TABLE CATEGORY ( CATID INTEGER NOT NULL, CATNAME VARCHAR2(255 BYTE) NOT NULL, PARENTID INTEGER DEFAULT 0 ) ALTER TABLE CATEGORY ADD ( CONSTRAINT FK_CATEGORY FOREIGN KEY (PARENTID) REFERENCES CATEGORY (CATID));
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 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.mycompany.entity.Category" table="CATEGORY"> <id name="catId" type="int" column="CATID"> <generator class="assigned" /> </id> <property name="catName" column="CATNAME" type="java.lang.String" /> <one-to-one name="parentCategory" /> <set name="childCategories" table="CATEGORY" inverse="true" lazy="true" > <key column="PARENTID"/> <many-to-many class="com.mycompany.entity.Category" column="CATID" /> </set> </class> </hibernate-mapping>
merci pour votre reponse, mais moi j'ai une relation manyto-one:
j'ai essayé la solution suivante:
la tabe:
le mapping:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CATID INTEGER NOT NULL, CATNAME VARCHAR2(255 BYTE) NOT NULL, PARENTID INTEGER DEFAULT 0 ) ALTER TABLE CATEGORY ADD ( CONSTRAINT FK_CATEGORY FOREIGN KEY (PARENTID) REFERENCES CATEGORY (CATID));
et dans le fichier Category.java j'ajoute deux attributs:
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 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.mycompany.entity.Category" table="CATEGORY"> <id name="catId" type="int" column="CATID"> <generator class="assigned" /> </id> <property name="catName" column="CATNAME" type="java.lang.String" /> <many-to-one class="com.mycompany.entity.Category" column="CATID" name="childCategories" /> </class> </hibernate-mapping>
Category Parent ;
et
List<Category> childCategories;
mais ça marche pas
merci.
Qu'est-ce qui ne marche pas ?mais ça marche pas
Tu as un message d'erreur ?
Partager