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 :

Problème d'affichage de Collection


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 61
    Points : 44
    Points
    44
    Par défaut Problème d'affichage de Collection
    Bonjour,

    J'ai une table "ClientPresent" resultat d'une relation many to many entre:

    Contrat <---> Contart.java
    Client <---> Client.java

    mes fichiers de mapping

    Contrat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ....
    <set name="clientsPossedantLeContrat" table="ClientPresent" lazy="false">
    			<key column="CONTRATID"/>
    			<many-to-many column="NOMCLIENT" class="service.hibernate.Client"/>			
    </set>
    el le Client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    ....
    <set name="contratsPresentsPourLeClient" table="ClientPresent" lazy="false">
    			<key column="NOMCLIENTFK"/>
    			<many-to-many column="CONTRATID" class="service.hibernate.Contrat"/>
    </set>
    sur ma page JSP, quand je veux afficher la presence d'un contrat pour un client, je fais ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <logic:iterate name="DataUserChoices" property="listClient" scope="session" id="client" indexId="index">
     
    <logic:equal name="ssa" property="viewChecked" value="true">		
    <display:column sortable="true" property="<%="ssasPossedantLeContrat"%>"		title="<%=client.getLibelle())%>" />
    </logic:equal>
     
    </logic:iterate>
    lors de l'affichage, j'ai ça:
    [service.hibernate.Client@3f4b95f0, service.hibernate.Ssa@3f30cc44]

    ça veut dire que le contrat est présents chez deux clients.

    Ce que je veux, c'est afficher le nom du client, en d'autre terme utliser les methodes de la classe Client.

    Comment je peux faire.
    et ajouter quelque choses à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ....
    
    <logic:equal name="ssa" property="viewChecked" value="true">		
    <display:column sortable="true" property="<%="ssasPossedantLeContrat" << ici >>%>"		title="<%=client.getLibelle())%>" />
    ....

    en évitant l'erreur
    Error looking up property "" in object type "org.hibernate.collection.PersistentSet"


    Si j'étais pas très claire, merci de me le signaler .. asking 4 your help plzzzzzzzzzzzzz

  2. #2
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    Je n'ai jamais utilisé hibernate pour de l'affichage sur JSP par derrière par contre, si je puis me permettre cette remarque :

    Ta relation many-to-many entre le contrat et le client semble bidirectionnelle. Or, ton mapping n'en fait pas mention. Fais donc attention de ne pas oublier ce détail qui créerai quelques doublons involontaires d'une part et soulèverai des exceptions non voulues si des contraintes d'unicité venaient pointé leur nez la dedans

    Bon courage pour la suite des réponses.

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Juillet 2006
    Messages : 74
    Points : 90
    Points
    90
    Par défaut
    as tu redefinis les methodes toString() dans tes objets ? en général quand tu as un affichage de ce type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [service.hibernate.Client@3f4b95f0, service.hibernate.Ssa@3f30cc44]
    c'est parce qu'il ne sait pas comment affiché l'objet

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 61
    Points : 44
    Points
    44
    Par défaut
    Non, je l'ai pas redefini.

    Dois je la redefinir dans l'objet Contrat?

    T'as raison, il sait pas afficher directement un PersistentSet, je ne sais pas comment faire pour appeler les methodes de cette classe (PersisteSet)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <logic:iterate name="DataUserChoices" property="listClient" scope="session" id="client" indexId="index">
    
    <logic:equal name="ssa" property="viewChecked" value="true">		
    <display:column sortable="true" property="<%="ssasPossedantLeContrat"???%>"		title="<%=client.getLibelle())%>" />
    </logic:equal>
    
    </logic:iterate>

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Juillet 2006
    Messages : 74
    Points : 90
    Points
    90
    Par défaut
    oui redefinis la methode toString des objets que tu manipules à l'affichage, ça devrait améliorer les choses normalements

    edit : pourquoi tu utilises un PersistentSet ???

    d'après la javadoc, c'est un wrapper de la classe Set, donc tu devrais pouvoir l'utiliser normalement

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 61
    Points : 44
    Points
    44
    Par défaut
    Parceque "ssasPossedantLeContrat" est de ce type.

    Alors, mon problème c'est ce qu'il sait pas afficher directement cet objet, chose qui est normal.

    Mais, quand j'ajoute par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <display:column sortable="true" property="<%="ssasPossedantLeContrat."+isEmpty()%>"
    il l'accepte pas, erreur de compilation.

  7. #7
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Juillet 2006
    Messages : 74
    Points : 90
    Points
    90
    Par défaut
    et c'est quoi l'erreur de compilation qui est affiché ?

    edit:
    Etant donné que ssasPossedantLeContrat est une collection, pourquoi tu ne la parcoures pas en faisant une sous-table dans ta colonne ?

    si c'est displaytag que tu utilises pour l'affichage, tu peux trouver un exemple d'utilisation des sous-tables sur leur site

    en espérant que ça te dépanne.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 61
    Points : 44
    Points
    44
    Par défaut
    Je pense pas qu'une sous-table fait le jeu.

    Mon but est tester si un "client" est présent dans ma collection, et afficher par la suite un true ou un false, normalement je dois utiliser la méthode "contain(Object)". Mais, même pour "isEmpty" il me signale une erreur de compilation :

    "The method isEmpty is undefined" .. et pareil pour les autres méthodes, j'ai pensé un faire un casting du genre:
    (org.hibernate.collection.PersistentSet)ssasPossedantLeContrat ...

    Non plus

Discussions similaires

  1. [2.x] Problème d'affichage d' un formulaire de type Collection
    Par ayoub246 dans le forum Symfony
    Réponses: 9
    Dernier message: 11/03/2014, 13h40
  2. Réponses: 2
    Dernier message: 22/09/2008, 03h55
  3. [Kylix] problème d'affichage
    Par scalvi dans le forum EDI
    Réponses: 1
    Dernier message: 18/06/2003, 11h07
  4. Réponses: 1
    Dernier message: 06/03/2003, 12h57
  5. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 10h43

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