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 :

génération de clé composite


Sujet :

Hibernate Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Par défaut génération de clé composite
    Bonjour,

    Peut-on générer avec la balise <generator> une clé composite : <composite-id>?
    Il pète dans mon mapping lorsque j'essai !
    La seule possibilité reste de faire ça en objet, sélectionner le max.... C'est pas pratique quand même ! Une solution ?

  2. #2
    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

    Euh, à vrai dire, je ne vois pas l'interet de générer une clé sur une clé composée. La raison principale d'une clé composée réside, d'après moi, dans la réutilisation de clé étrangère ou de données connues (date, heure, etc...).

    Pourrais-tu développer ton idée afin que l'on puisse mieux comprendre le probleme ?
    (En effet, selon mon idée du générateur, la clé générée sert d'identifiant car elle sera unique par rapport aux autres, donc je ne comprend pas vraiment le concept ici désolé)

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Par défaut
    A vrai dire Franky :

    En fait, ce qu'il me faudrait, c'est une incrémentation en fonction d'un attribut. Là, j'ai besoin d'incrémenter la clé DATA2, pour chaque DATA1 ajouté. C'est faisable sans passer par des traitements objets de requêtes... ?

    Ma table est ainsi faite :
    DATA1 DATA2
    1 1
    1 2
    1 3
    1 4
    1 5
    1 6
    2 1
    2 2
    2 3
    2 4
    2 5
    2 6
    2 7
    2 8

  4. #4
    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
    Le problème vient surtout du fait que le generator ne prend pas en compte les autre champs pour composer sa clé... il aura donc beaucoup de mal à trouver LA clé qui fonctionne. Une idée serait de créer ta propre classe de génération de clé qui irait faire une simple requete en base pour connaitre le numero suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT MAX(DATA2) FROM TABLE WHERE DATA1='X'"
    Ou bien tu utilises "assigned" en effet et recherche le résultat par toi même avant de vouloir sauvegarder l'objet.

    Et sinon, le Franky, il sort d'où ?!? Tu serais pas un adepte de la SG ayant connu _beber85 ?!? (jte jure, ce type la est une vraie pipelette ... heureusement qu'il est en vacances, il nous saoulera moins )

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Par défaut
    En fait, c'est ce que je comptai faire :une classe de génération, qui prend le max.... Mais bon, c'est balot quand même, Hibernate pourrait le faire, et pouvoir laisser quand même la possibilité d'incrémenter une des clés (sans forcément tenir compte d'un autre attribut), c'est une limite là...
    Quant au assigned, il n'est même pas métable dans le mapping des composite-id en fait, on ne peut pas mettre de <generator> dedans.


    Sissi SG-Adepte !!!!
    Jle vois demain d'ailleurs.... même s'il est parti, il est toujours là.....

  6. #6
    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
    Ok, donc tu es réellement forcé d'agir en prévention alors... durdur en effet =)

    Par contre, je ne sais pas si c'est réellement une faiblesse... encore une fois, les générations sont utilisées pour les clés primaires. En utilisant des clés composées, on s'oriente vers une unicité lié à des paramètres extérieurs surtout... mais il est vrai que ton problème pourrait toutefois trouver une solution afin de combler un ensemble de cas rencontrables.

    Tiens, il vient à la SG demain, sûrement qu'il n'a pas fini son boulot c'te faignasse

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/03/2010, 21h44
  2. Génération programmatique d'un UUID
    Par jIdJo dans le forum MFC
    Réponses: 2
    Dernier message: 18/07/2003, 02h50
  3. [Lomboz] Génération de code pour EJB
    Par paikan dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 09/07/2003, 14h28
  4. [WSAD] Composition visuelle d'une applet
    Par schum11 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 09/04/2003, 16h19

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