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 :cry: .
Version imprimable
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 :cry: .
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:
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:
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:
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:
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 ?Citation:
mais ça marche pas
Tu as un message d'erreur ?