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 :

Redéfinir les @ID dans les sous-classes


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2003
    Messages : 71
    Par défaut Redéfinir les @ID dans les sous-classes
    Bonjour,
    une fois n'est pas coutume j'ai un soucis.
    Je dispose d'une classe abstraite GeoInformation qui possède un id(int) un code(String) un nom(String) et deux ou trois autres trucs
    4 sous classes héritent de cette classe :
    - Country
    - Region
    - Destination
    - City

    mon but est le suivant : parser un fichier XML (que l'on m'envoi) afin de créer les objet et de peupler une base de donnée.

    Le problème qui semble survenir : les id que l'on me fournit ne sont pas uniques pour les "GeoInformations", je m'explique un pays peut avoir le meme id qu'une region ou qu'une ville (mais deux pays n'ont pas le meme id). Et ceci provoque une exception lors de la persistance des informations.

    Ce que j'aimerais : redéfinir un @id dans mes classes filles du genre countryId, regionId, ... mais cela ne semble pas être possible (CF le message Unable to define/override @Id(s) on a subclass)

    Avez vous une solution à mon problème ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Par défaut
    Salut,
    D'abord, quelle stratégie de mapping utilises-tu pour la persistence de cette hiérarchie d'héritage ? En plus, si un champ ne peut pas être unique pour des enregistrements différents, c'est bien qu'il n'est pas le meilleur candidat pour le champ ID de l'entité concernée. Tu peux donc ajouter un champ auto-increment comme identifiant, et ce que tu appelles "id" dans ton modèle actuel pourrait être renommé parce qu'il présente un intérêt métier (business meaning).
    Sinon, tu pourrais utiliser la stratégie de mapping "Single table per concrete entity class", mais je me demande si ça vaut la peine vu la complexité que ça présente et qu'en plus son support n'est pas requis par la spécification EJB 3.0.
    Une autre solution serait que la super-classe abstraite ne soit pas une entité (c'est-à-dire pas d'annotation @Entity), mais soit annotée avec @MappedSuperclass et ainsi chaque sous-classe sera mappée à sa propre table, mais en répétant les champs communs.

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2003
    Messages : 71
    Par défaut
    le problème d'une mapped superclass est que j'ai des relations @ManyToOne qui fond reference à des GeoInformations... donc ca ne marchera pas (du moins je pense)

    Il me semble donc que je n'ai pas trop le choix je vais devoir générer des ID... et changer pas mal de chose dans ma couche métier.

    Pour ce qui est des ID actuels je n'ai pas trop le choix je reçoit pas mal de fichiers XML assez rigides dans leurs conception et il faut que j'en fasse quelque chose d'utilisable...

    Merci en tout cas de t'être penché sur mon cas.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/11/2011, 23h35
  2. enlever les slashes devant les apostrophes dans les mails
    Par laurentSc dans le forum Langage
    Réponses: 10
    Dernier message: 16/11/2010, 18h57
  3. Réponses: 3
    Dernier message: 06/08/2009, 17h09
  4. Réponses: 4
    Dernier message: 11/09/2006, 16h55
  5. Les polices dans les tables et les requêts
    Par zooffy dans le forum Access
    Réponses: 3
    Dernier message: 21/06/2006, 11h06

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