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 :

many-to-one chargement d'un élément particulier de la collection


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 142
    Par défaut many-to-one chargement d'un élément particulier de la collection
    Bonjour,

    J'aimerais avoir vos avis concernant une modélisation.

    j'ai deux tables
    equipe
    joueur

    une equipe possède plusieurs joueurs.
    Au niveau du mapping hibernate, on aura un set (collection de joueurs) dans l'objet équipe.

    Je veux récupérer dans équipe un joueur en particulier, le capitaine par exemple (un champ de la table permet de le trouver).
    Mettre le capitaine dans le set Joueurs de équipe ne me semble pas correct car pour moi ce set doit respecter la lisaison entre equipe et joueurs c'est à dire contenir l'ensemble des joueurs de l'équipe.

    On peut créer une autre liaison 1:1 entre les tables qui permettrait cette fois d'être cohérent pour récupérer le capitaine, le problème est que l'on modifie la base pour s'adapter à hibernate.

    On peut aussi créer un "formula" dans le mapping qui permettrait de récupérer le joueur capitaine à chaque fois qu'on récupère une équipe, mais pour chaque équipe récupérée, il y aurait une requête supplémentaire pour récupérer le capitaine ce qui n'est pas correct pour les performances alors qu'en sql natif une seule requète est suffisante pour le tout.

    j'espère avoir été clair et j'attends vos propositions, merci d'avance.

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Bonjour,
    Pour moi t'as 2 solutions possibles, toutes 2 basées sur cette architecture:
    -Tu rajoutes un boolean dans les joueurs pour identifier si capitaine ou pas, et dans ce cas tu fais une requete HQL classique qui te rapatriera de la base ce capitaine, mais ceci n'est pas une très bonne conception.
    -Ou simplement tu définis dans une equipe un role capitaine, donc pour obtenir le capitaine d'une equipe il te suffira de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Capitaine capitaine = equipe.getCapitaine();
    Cette dernière solution resoudrait ton pb.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 142
    Par défaut
    Oui je suis assez d'accord avec la notion de role, mais si j'ai plusieurs roles dans mon équipe et à un moment je veux récupérer l'équipe avec le role capitaine, est ce que tu trouves correct de mettre dans la collection role de équipe que le role capitaine ?

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Je ne crois pas qu'on se comprenne sur la notion de "role", c'est un role à la UML, c'est à dire une reference d'un objet externe dans unobjet courant.
    Ce que je te propose c'est de faire une relation 1:1 entre Equipe et Joueur, ici le joueur jouera le role de capitaine de l'equipe, et Equipe le role de l'equipe dans laquelle il est capitaine.
    Je ne vois vraiment pas où ca te pose un souci, ca n'aura pas de rapport, ni d'impact avec ta relation 1:N, Equipe et joueurs de l'équipe.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 142
    Par défaut
    oui c'est ce que je proposais dans mon premier poste.

    Je voulais pas le faire car j'avais l'impression de modifier la base pour m'adapter à hibernate.
    Si l'idée du booléen dans joueur semble moins intéressante c'est donc cette relation 1:1 qu'on aurait rajouté dans tous les cas.
    ca me semble être le plus propre, merci pour ton aide

    Merci pour l'aide

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/12/2007, 22h16
  2. html:select et hibernate many-to-one
    Par davdou dans le forum Struts 1
    Réponses: 1
    Dernier message: 05/07/2006, 14h56
  3. Hibernate : suppression sur relation many to one
    Par taf dans le forum Hibernate
    Réponses: 1
    Dernier message: 23/05/2006, 13h08
  4. [Tableaux] Supprimer 1 élément particulier d'1 tableau
    Par harlock59 dans le forum Langage
    Réponses: 22
    Dernier message: 17/05/2006, 16h50
  5. [hibernate] "many-to-one"
    Par mehdi_swatch dans le forum Hibernate
    Réponses: 26
    Dernier message: 12/05/2006, 20h11

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