IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

[hibernate]many-to-many petit problème


Sujet :

Hibernate Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 38
    Points : 33
    Points
    33
    Par défaut [hibernate]many-to-many petit problème
    Bonjour, j'ai un ptit probleme que je ne sais pas comment résoudre

    La base de donnée
    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
     
    Mysql 
    -->Person
    id
    nom
    prenom
    age
    -->person_manga
    id
    id_person
    id_manga
    -->Manga
    id
    auteur
    nom
    editeur
    *j'ai fait expres de nommé les clé de chaque id et d'ajouter une clé id a la table de liaison . C'était pas util sur mon test , mais j'ai un projet en prod qui a ce genre de table .


    Mon probleme se situe sur un many-to-many a partir d'une personne j'aimerais récupéré un Set de manga.

    dans le class de person
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    	"-//Hibernate/Hibernate Mapping DTD//EN"
    	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
     
    <hibernate-mapping>
    	<class
    		name="com.jeux2role.manga.beantable.Person"
    		table="person"
    	>
    		<id
    			name="Id"
    			type="integer"
    			column="id"
    		>
    			<generator class="native"/>
    		</id>
     
    		<property
    			name="Age"
    			column="age"
    			type="integer"
    			not-null="true"
    			length="11"
    		/>
    		<property
    			name="Nom"
    			column="nom"
    			type="string"
    			not-null="true"
    			length="255"
    		/>
    		<property
    			name="Prenom"
    			column="prenom"
    			type="string"
    			not-null="true"
    			length="255"
    		/>
     
     
    	     <set name="mangas" table="person_manga">
               <key column="id_person"/>
               <many-to-many column="IdManga" class="com.jeux2role.manga.beantable.Manga"/>
             </set>      
    	</class>	
    </hibernate-mapping>
    apres exécution, la requete généré donne ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Hibernate: select persons0_.id_manga as id3_1_, persons0_.IdPerson as IdPerson1_, person1_.id as id2_0_, person1_.age as age2_0_, person1_.nom as nom2_0_, person1_.prenom as prenom2_0_ from person_manga persons0_ left outer join person person1_ on persons0_.IdPerson=person1_.id where persons0_.id_manga=?
    Hors il me renvoi le id_manga et le id_person de la table person_manga , sachant que je ne voulait recuperer que les champs de la table manga, pour bien remplir le bean qui va avec manga.

    quelqu'un aurait une solution ?
    Merci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 23
    Points : 28
    Points
    28
    Par défaut
    Bonjour,

    Tu peux utiliser la projection pour récupérer que les champs que t'as besoin :

    http://www.hibernate.org/hib_docs/v3...ycriteria.html


    Bonne journée

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    En faite je recupere
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    com.jeux2role.manga.beantable.Manga man = (com.jeux2role.manga.beantable.Manga) session.createQuery("from Manga").list().get(0);
    comme ceci et je fait un
    qui est sensé me renvoyer mon Set.

    Donc je ne vois pas trop le rapport avec le systeme de critère sachant que tout est fait dans le mapping avec du many-to-many.

    Si y a un rapport , j'aimerais bien qu'on me l'explique car sa fait pas longtemps que j'ai commencé avec hibernate et pas mal de chose m'échappe.

    Merci d'avance

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 23
    Points : 28
    Points
    28
    Par défaut
    re,

    dans ta requete :
    createQuery("from Manga")
    tu recupére l'objet manga ainsi que les objets associés.
    tu peux mettre select comme :
    Query q = Session.createQuery("select id as idManga, nom as nomManga")
    aprés tu transforme le resultat au bean que t'as crée, exemple de bean :
    class beanView{
    private Integer idManga;
    private String nomManga;
    ......
    getter et setter
    }
    dans ta "Query " :
    q.setResultTransformer(Transformers.aliasToBean(beanView.class));
    q.list(); // liste de tes bean.
    mais attention tu dois respecter la casse des alias ainsi que le type parrapport autype de donées dans ton hbm.

    j'espére que j'ai compris tes besoins.

    a ta disposition pour d'autres informations

    A+

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    En faite , c'est pas du tout sa que je demandais mais c est pas grave je te remercie quand meme d'avoir répondu.


    J'ai résolue mon probleme, il me renvoyais pas ce que je voulais a cause d'une erreur , j'ai mis le nom de ref dans une column

    donc voici la version corrigé.

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    	"-//Hibernate/Hibernate Mapping DTD//EN"
    	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
     
    <hibernate-mapping>
    	<class
    		name="com.jeux2role.manga.beantable.Person"
    		table="person"
    	>
    		<id
    			name="Id"
    			type="integer"
    			column="id"
    		>
    			<generator class="native"/>
    		</id>
     
    		<property
    			name="Age"
    			column="age"
    			type="integer"
    			not-null="true"
    			length="11"
    		/>
    		<property
    			name="Nom"
    			column="nom"
    			type="string"
    			not-null="true"
    			length="255"
    		/>
    		<property
    			name="Prenom"
    			column="prenom"
    			type="string"
    			not-null="true"
    			length="255"
    		/>
     
     
    	     <set name="mangas" table="person_manga">
               <key column="id_person"/>
               <many-to-many column="id_manga" class="com.jeux2role.manga.beantable.Manga"/>
             </set>      
    	</class>	
    </hibernate-mapping>
    C'est vraiment chiant quand les exceptions n'affichent pas l erreur exacte.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème hibernate one-to-many / many-to-one
    Par valkeke dans le forum Hibernate
    Réponses: 4
    Dernier message: 02/04/2014, 14h06
  2. [Mapping] Problème de reverse hibernate many-to-many
    Par cypriendt dans le forum Hibernate
    Réponses: 10
    Dernier message: 13/06/2012, 11h59
  3. Hibernate Relations Reflexives Many-to-Many
    Par Shiingo dans le forum Hibernate
    Réponses: 6
    Dernier message: 14/09/2007, 15h57
  4. Un peu de mal a comprendre le concepte "one-to-many" et "many-to-many"
    Par chriscoolletoubibe dans le forum Hibernate
    Réponses: 4
    Dernier message: 29/03/2007, 18h50
  5. [hibernate 3] mapping many-to-many
    Par darkyspirit dans le forum Hibernate
    Réponses: 4
    Dernier message: 29/12/2006, 19h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo