-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 posts ] 
Author Message
 Post subject: Debutant Spring Hibernate2 --> mapping many-to-many
PostPosted: Mon Sep 12, 2005 11:22 am 
Newbie

Joined: Mon Sep 12, 2005 11:05 am
Posts: 7
Location: Swizerland
salut a tous

Voilà je suis en train d'étudier Spring et je fais un mimi de chez mimi applic pour comprendre le produit...

voilà la situation

Classes interface et implementation

Classe Casehoraire
attributs
long id
date debut
date fin
String matiere
liste salle
methodes
set/get

classe salle
attributs
String nom
int nbPlace

les fichier de mapping

<hibernate-mapping package="horaire">
<class name="CasehoraireImpl" table="case">
<id name="id" column="case_id" >
<generator class="assigned"/>
</id>
<property name="debut" column="case_deb" />
<property name="fin" column="case_fin" />
<property name="matiere" column="case_mat" />
<set
????
</set>
</class>
</hibernate-mapping>

<hibernate-mapping package="horaire">
<class name="CasehoraireImpl" table="salle">
<id name="nom" column="sal_nom" >
<generator class="assigned"/>
</id>
<set
????
</set>
</class>
</hibernate-mapping>

Ma question comment je mappe pour avoir du many-to-many???
car meme avec 2 tuto j'ai du mal a comprendre...

merci d'avance et bonne journée


Top
 Profile  
 
 Post subject:
PostPosted: Mon Sep 12, 2005 4:09 pm 
Pro
Pro

Joined: Fri Sep 02, 2005 4:21 am
Posts: 206
Location: Vienna
Salut,

Je peux bien te donner une réponse, mais je ne suis pas sûr que cela va t'aider beaucoup..
Je pense que ce que tu cherches est plus ou moins:
Code:
<class name="Casehoraire" table="case_horaire">
...
        <set name="salles" inverse="true">
            <key column="id"/>
            <many-to-many column="nom" class="Salle"/>
        </set>
...
</class>

<class name="Salle" table="salle"
...
        <set name="cases">
            <key column="nom"/>
            <many-to-many column="id" class="Casehoraire"/>
        </set>
...
</class>

Pour que cela marche il faut que cases soit déclaré comme Set (classe Salle) et de même salles (classe Casehoraire).

J'ai changé le nom de la table case en case_horaire, car case est un mot réservé dans bon nombre (sinon tous) de BD.

Je te conseille le livre Hibernate in Action qui explique ce genre de choses en détail.

Erik


Top
 Profile  
 
 Post subject:
PostPosted: Mon Sep 12, 2005 4:17 pm 
Newbie

Joined: Mon Sep 12, 2005 11:05 am
Posts: 7
Location: Swizerland
merci je vais déja esssayer ca demain matin mais tu entends quoi par set je peux pas utilisé ma liste ???

merci pour le livre mais je doit finir ma recherche pour le 14.09 donc lire le livre ca risque d'être short avec mes délais ;-)


Top
 Profile  
 
 Post subject:
PostPosted: Mon Sep 12, 2005 11:12 pm 
Pro
Pro

Joined: Fri Sep 02, 2005 4:21 am
Posts: 206
Location: Vienna
Salut
kmakma wrote:
...tu entends quoi par set je peux pas utilisé ma liste ???

Je ne suis pas un grand expert en associations. Jusqu'ici je n'ai utilisé que Set dans des associations. Le fait est que pour utiliser une liste il faut un index (voir docu), et que je n'en vois pas dans ton cas. D'autre part un Set est logique, car tu n'auras jamais 2 fois la même salle pour une case horaire donnée ni deux fois la même case horaire pour une salle donnée (ou alors il y a un problème...). Ou bien quelque chose m'a échappé.

kmakma wrote:
...je doit finir ma recherche pour le 14.09 donc lire le livre ca risque d'être short avec mes délais

Lire le chapitre sur les associations est relativement vite fait et permettrai de mieux comprendre de quoi il retourne - même dans un délai aussi court.

Erik


Top
 Profile  
 
 Post subject:
PostPosted: Tue Sep 13, 2005 8:28 am 
Newbie

Joined: Mon Sep 12, 2005 11:05 am
Posts: 7
Location: Swizerland
de set je suis passer a bag ... et je pense ne pas etre loin de la solution

mais j'ai une question qui est suremment conne :
est-ce que la table associative doit aussi avoir un fichier de mapp car a ce moment la je dois aussi faire une nouvelle classe java ma table associative ??? c'est pas que je touve ca limit inutile mais c'est tout comme ...

bonne


Top
 Profile  
 
 Post subject:
PostPosted: Tue Sep 13, 2005 8:34 am 
Pro
Pro

Joined: Fri Sep 02, 2005 4:21 am
Posts: 206
Location: Vienna
kmakma wrote:
est-ce que la table associative doit aussi avoir un fichier de mapp

Pas à ma connaissance. Hibernate déduit du mapping des tables associées la table "manquante".

Erik


Top
 Profile  
 
 Post subject:
PostPosted: Tue Sep 13, 2005 8:48 am 
Newbie

Joined: Mon Sep 12, 2005 11:05 am
Posts: 7
Location: Swizerland
non c'est bon c'est juste que les interface et les implémentation je suis un peu (beaucoup) mélangé les pinceaux...

mais ca a l'aire d'être bon j'ai un problème car j'ai un setteur qui est en privé et il pas l'aire d'aprecier la chose


GRAVE: IllegalArgumentException in class: ClasseImpl, setter me
thod of property: caseH
13 sept. 2005 14:43:59 net.sf.hibernate.property.BasicPropertyAccessor$BasicSett
er set
GRAVE: expected type: CaseHoraire, actual value: net.sf.hiberna
te.collection.Bag
Exception in thread "main" org.springframework.orm.hibernate.HibernateSystemExce
ption: IllegalArgumentException occurred while calling setter of ClasseImpl.caseH; nested exception is net.sf.hibernate.PropertyAccessException
: IllegalArgumentException occurred while calling setter of ClasseImpl.caseH
net.sf.hibernate.PropertyAccessException: IllegalArgumentException occurred whil
e calling setter of ch.esnig.horaire.ClasseImpl.caseH
at net.sf.hibernate.property.BasicPropertyAccessor$BasicSetter.set(Basic
PropertyAccessor.java:68)
at net.sf.hibernate.persister.AbstractEntityPersister.setPropertyValues(
AbstractEntityPersister.java:229)
at net.sf.hibernate.impl.SessionImpl.initializeEntity(SessionImpl.java:2
224)

mais car le setteur en question c'est un set qui ajoute un élément à la liste

mais merci boucoup pour l'aide que tu m'a déjà fournie c'est très cool


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.