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

JPA Java Discussion :

Génération d'ID dans JPA


Sujet :

JPA Java

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juin 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Génération d'ID dans JPA
    Bonjour,

    Je conçois une couche de persistance pour une application web sous un servlet Container Jetty.
    Mon souci est que mes objets (entités) sont presque conformes à la norme des entités (JavaBean) mais ne contiennent pas d'Id, le problème est que je ne dois pas les modifier.
    Est ce qu'il y a une solution pour que le fichier xml de mapping génére de façon automatique un id pour chaque chaque entité sans que celle-ci n'ait un attribut ID et les getters et setters qui vont avec.

    Merci par avance pour votre réponse
    Cordialement

  2. #2
    Membre averti Avatar de clubist
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Février 2008
    Messages : 217
    Points : 301
    Points
    301
    Par défaut
    Dans la spécification JPA, Il faut obligatoirement définir une des propriétés de la classe avec l'annotation @Id pour la déclarer comme étant la clé primaire de la table.

    Cette annotation peut marquer soit le champ de la classe concernée soit le getter de la propriété. L'utilisation de l'un ou l'autre précise au gestionnaire s'il doit se baser sur les champs ou les getter pour déterminer les associations entre l'entité et les champs de la table. La clé primaire peut être constituée d'une seule propriété ou composées de plusieurs propriétés qui peuvent être de type primitif ou chaîne de caractères.

    La clé primaire composée d'un seul champ peut être une propriété d'un type primitif, ou une chaîne de caractères (String).

    Une deuxième solution :
    Le modèle de base de données relationnelle permet la définition d'une clé primaire composée de plusieurs colonnes. L'API Java Persistence propose deux façons de gérer ce cas de figure :

    -L'annotation @javax.persistence.IdClass
    -L'annotation @javax.persistence.EmbeddedId

    L'annotation @IdClass s'utilise avec une classe qui va encapsuler les propriétés qui composent la clé primaire. Cette classe doit obligatoirement :

    - Être sérialisable
    -Posséder un constructeur sans argument
    -Fournir une implémentation dédiée des méthodes equals() et hashCode()

    et Il est nécessaire de définir la classe de la clé primaire dans le fichier de configuration persistence.xml

    Pour plus d'information,vous veuillez voir ces cours et tutoriels pour apprendre Java
    .

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Points : 83
    Points
    83
    Par défaut
    Comme l’a dit clubist, vous êtes obligé d’avoir une clé primaire (pas de clé primaire = pas d’entité jpa).
    Vous dites que vos classes ne contiennent pas de clé primaire => OK
    Vous dites que vous ne pouvez pas les modifier pour rajouté un champ id => OK

    La seule solution que vous avez maintenant (à mon avis) c’est de trouver dans vos entités (classes) une combinaison de champs qui soit unique par instance de classe (c’est la combinaison qui doit être unique et non les champs individuels). Et cette combinaison sera votre clé primaire composée. Vous n’avez plus qu’à suivre les indications données par clubist (IdClass).

Discussions similaires

  1. Génération de cube dans SQL Agent
    Par marco01 dans le forum Cognos
    Réponses: 0
    Dernier message: 18/06/2008, 19h28
  2. heritage dans jpa
    Par Jacobian dans le forum JPA
    Réponses: 1
    Dernier message: 16/05/2008, 22h09
  3. génération de dao pour jpa
    Par sheik dans le forum JPA
    Réponses: 2
    Dernier message: 20/12/2007, 14h18
  4. Réponses: 1
    Dernier message: 16/05/2007, 11h29
  5. [Trigger] Génération d'erreurs dans un trigger
    Par gilder89 dans le forum Développement
    Réponses: 5
    Dernier message: 10/04/2007, 12h02

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