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] Set avec une seule valeur


Sujet :

Hibernate Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 156
    Points : 165
    Points
    165
    Par défaut [Hibernate] Set avec une seule valeur
    Bonjour,

    J'ai deux tables : promotion(promo_id, desc,...) et détails(promo_id, param1,...) et je souhaite réaliser un mapping OR de ces tables. Dans l'entité "Promotion" je voudrais un attribut "details" de type l'entité "Details". Le problème c'est qu'il s'agit d'une relation one-to-one mais avec la clé étrangère dans la table "details" au lieu de la table "promotion".

    Sachant que je ne peux pas modifier le modèle de données, la seule solution que j'ai pu trouver a été de faire un mapping one-to-many sous forme d'un Set de "Details". Mais il s'agit d'un Set qui ne contiendra toujours au mieux qu'un seul élément.

    Ma question est donc : Est ce qu'il y a un moyen de faire ça de façon plus élégante et surtout qui n'utilise pas une collection pour un seul élément (je débute en Hibernate donc il y a peut être un autre moyen que je ne connais pas encore).

    Voici le code du mapping que j'ai utilisé dans la classe Promo :

    <set name="details">
    <key column="promo_id" not-null="true" />
    <one-to-many unique="true" class="Details" />
    </set>

    Merci.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 160
    Points : 75
    Points
    75
    Par défaut
    je crois que j'ai pas tres bien saisi ton bleme , pourquoi tu veux avoir une instance de details dans promotion du moment que cela n'est pas admis par ton modele , la conception c'est le premier pas vers une realisation saine.

    une autre remarque , je vois que t'as la clé de promo dans la classe details, et toi tu veux faire l'inverse, mais bon.

    maintenant si t'es sur de ce que tu veux faire , explique un peu plus en m'ecrivant juste les elements de chaque classe , et qu'est ce que tu veux ajouter dans les classes, et je verrai si je peux t'aider.

    mais essaie d'abord de poser tous les cas possibles et regarde si ton modele de les realiser avant de proceder au changement

    bon courage

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 156
    Points : 165
    Points
    165
    Par défaut
    En fait ce qui devrait être modélisé c'est : à 1 "Promotion" est associé 1 "Détails". Donc en toute logique ça devrait soit être dans la même table, soit "Promotion" devrait avoir une clée étrangère vers "Details". Ce n'est pas le cas (peut être pour des raisons historiques, ou peut être sans aucune raisons). Toujours est il qu'il n'est pas possible de modifier la base. C'est un legacy et pleins d'autres applications utillisent ces tables.

    Donc non ce n'est pas une erreur de conception, ou du moins si s'en est une elle n'est pas gérable à mon niveau.

    Maintenant ce que je cherche à faire c'est dans l'entité "Promotion" avoir une méthiode getDetails() qui me renvois le détail de la promo sous forme d'un objet Details et non pas sous la forme d'une Collection contenant une seule instance de "Details" (puisque même si ce n'est pas le cas dans la modélisation, au niveau du métier on peut garantir qu'il n'y a qu'un seul détail).

    Est ce que je suis un peu plus clair ou pas?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 160
    Points : 75
    Points
    75
    Par défaut
    alors dans ce cas et du moment que tu travailles sur des tables deja existante et dont tu auras besoin selon ce que j'ai compris, tu pourras faire

    cote SQL:
    ajouter la clé de la table detail dans la table promotion

    cote classe
    ajouter un objet detail dans la classe promotion

    bien sur tu dois faire le necessaire dans le fichier de mapping , apres tu auras tu n'auras pas de collection mais un seul objet detail que tu pourras manipuler dans la classe promotion.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 156
    Points : 165
    Points
    165
    Par défaut
    Je ne peux pas modifier la table. Donc pas ajouter de clés.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 160
    Points : 75
    Points
    75
    Par défaut
    alors là

    serieusement je ne vois pas un moyen propres de faire la manip,

    sinoon est ce que tu connais tous les programmes qui mettent à jour la table promotion et si tu les connais est ce que t'as le droit de les modifier

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 156
    Points : 165
    Points
    165
    Par défaut
    Non je ne les connais pas. Mais de toutes façons ils ne souhaitent pas faire de modifications des bases, donc encore moins des autres programmes qui les exploitent.

    Si il n'y a pas de moyen d'éviter les Set, je ferai avec. Merci pour tes réponses en tout cas.

Discussions similaires

  1. [AC-2007] Champ calculé comme valeur dans une requête analyses croisées avec une seule table
    Par The old fool dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/10/2014, 10h15
  2. Selectionner des enregistrements avec une seule valeur
    Par ecarbill dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 15/01/2014, 23h47
  3. [AC-2010] Ouvrir un formulaire avec les enregistrements d'une seule valeur
    Par philenull dans le forum VBA Access
    Réponses: 18
    Dernier message: 13/09/2013, 08h31
  4. CR XI : Renseigner plusieurs paramètres avec une seule valeur
    Par jpamy dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 30/01/2009, 14h22
  5. Pourquoi une seule valeur de retour pour les fonctions ?
    Par Bruno75 dans le forum Langages de programmation
    Réponses: 33
    Dernier message: 18/01/2004, 13h58

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