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 :

Mapper une table sans clé primaire


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut Mapper une table sans clé primaire
    Bonjour,

    Apparement hibernate exige de définir une clé primaire pour la table à mapper. Sachant que j'ai une table sans clé primaire, et que je pourrais pas modfier, il y a une solution pour faire le mapping ???

    Merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Par défaut
    Dans ce cas je crois que la solution conseillée est de spécifier une clé composite qui prend tous les attributs de l'entité

  3. #3
    Membre émérite 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
    Par défaut
    Hum, euh, je crois avoir déjà dit que TOUTE table possédait une clé sous peine de doublons inévitables dans ta table ... dans la mesure où tu parles ici de villes ... j'ose penser que le but n'est pas d'avoir 50 fois la même ville dans ta table.

    Les clés de table sont de deux natures : techniques ou fonctionnelles. Dans le premier cas, tu trouveras dès lors un identifiant technique (id_ville) incrémenté automatiquement ou via un générateur de clé externe. Dans le second, parmi les champs existants dans ta table, certains sont uniques lorsqu'ils sont ensemble; ce qui permet dès lors de s'assurer que deux enregistrements distincts ne pointeront JAMAIS sur le même objet (entité), contrairement a la clé technique qui est plus explicite certes mais dont le contenu peut se retrouver en doublons après tout.

    Pour une ville, par exemple, on peut identifier le couple Code Postal / Nom de la Ville comme identifiant (pour une ville française par exemple) puisque, deux villes peuvent avoir le même nom, deux villes peuvent avoir même CP mais un couple CP/Ville ne peut se trouver en doublons (sinon, bonne chance pour le facteur )

    Si jamais ton SGBDR accepte les tables sans clé primaire ... il doit donc exister tout de même une clé fonctionnelle au sein de ta table (et non déclaré comme clé primaire (ou composite) au sein du SGBD. C'est cette clé qui te permettra de préciser à Hibernate comment distinguer deux objets. (donc il faut déclarer ce(s) attribut(s) comme clé(s) primaire(composites).

    Bon courage pour la suite !

    PS: Essaie de ne pas créer un post à chaque question que tu veux poser ... tu as un problème de départ dans un post ... reste dans ce post pour poser tes autres questions si elles sont liées à ton premier problème . Merci.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Je suis assez d'accord avec ce que tu dis Bizur, mais ça ne répond pas vraiment à la question.
    Il y a des fois ou tu dois travailler sur des tables que tu ne peux pas modifier et qui n'ont pas de clé primaire. Par exemple des tables temporaires qui sont alimentées par un autre outil qui te garantit l'absence de doublons.
    Enfin tout ça pour dire, que la théorie, c'est bien, mais que dans son cas, ça ne lui sert pas à grand chose.

  5. #5
    Membre émérite 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
    Par défaut
    Possible en effet, mais que l'on soit d'accord, son problème est tiré d'un autre thread où il voulait mapper une ville avec une table ville (composée de quelques champs) a laquelle on peut tout a fait trouver une clé fonctionnelle.

    Ce que j'essayais donc de dire ici, en plus de ma partie "theorique", c'est que sa solution est trouvable via l'indice de the-gtm, à savoir utiliser des composite-key pour CP/Ville ou bien un champ "code" si ca dernier existe (cf. le thread sur lequel le problème est évoqué).

    Après, si son problème ne possède vraiment aucune clé, la solution de the-gtm, semble la meilleure ... A CONDITION qu'aucun doublon ne soit présent en base ... sinon je ne vois pas comment Hibernate pourra faire pour distinguer deux objets identiques en tant que deux enregistrements identiques

Discussions similaires

  1. Puis-je utiliser une table sans clé primaire?
    Par laomaotou dans le forum Zend Framework
    Réponses: 4
    Dernier message: 04/10/2011, 15h39
  2. Réponses: 1
    Dernier message: 30/04/2009, 10h16
  3. mapper une table sans clé
    Par clairette dans le forum Hibernate
    Réponses: 4
    Dernier message: 28/08/2006, 17h26
  4. [Hibernate] Mapper une table sans clé primaire
    Par neuromencien dans le forum Hibernate
    Réponses: 4
    Dernier message: 13/06/2006, 17h05

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