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 :

Double relation entre deux entity (dont une hérité)


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 49
    Par défaut Double relation entre deux entity (dont une hérité)
    Bonjour.
    Je souhaite mettre en place ceci :



    Nous avons donc transfert qui hérite de evenement.
    Et ce que je souhaite mettre en place c'est une trace des transferts que ça soit expéditeur ou destinataire.
    Par exemple si on envoie un colis dans un magasin, deux transfert vont être crée (un en destinataire dans un magasin, un en expéditeur dans l'autre magasin).

    Pour mettre en place cela j'écris dans mon entity magasin :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @OneToMany(mappedBy = "magasin", fetch = FetchType.LAZY)
        private List<Transfert> transfertExpediteur;
        @OneToMany(mappedBy = "magasin", fetch = FetchType.LAZY)
        private List<Transfert> transfertDestinataire;

    et mon entity transfert :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @ManyToOne(fetch=FetchType.EAGER)
        @JoinColumn(name = "id_magasinExpediteur", nullable = false)
        private Magasin magasinExpediteur;
        @ManyToOne(fetch=FetchType.EAGER)
        @JoinColumn(name = "id_magasinDestinataire", nullable = false)
        private Magasin magasinDestinataire;

    Mais bon cette solution ne peut pas fonctionner j'imagine car dans magasin il ne sait pas comment reconstruire la bonne liste.
    Bon du coup j'ai crée deux nouvelles entity hérités de Transfert :

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @OneToMany(mappedBy = "magasin", fetch = FetchType.LAZY)
        private List<TransfertExpediteur> transfertExpediteur;
        @OneToMany(mappedBy = "magasin", fetch = FetchType.LAZY)
        private List<TransfertDestinataire> transfertDestinataire;

    Mais ça ne fonctionne pas à l'exécution j'ai droit à l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Exception Description: predeploy for PersistenceUnit [persistence] failed.
    Internal Exception: Exception [TOPLINK-7154] (Oracle TopLink Essentials - 2.0.1 (Build b04-fcs (05/27/2008))): oracle.toplink.essentials.exceptions.ValidationException
    Exception Description: The attribute [transfertDestinataire] in entity class [class toto.sheldon.entity.Magasin] has a mappedBy value of [magasin] which does not exist in its owning entity class [class toto.sheldon.entity.TransfertDestinataire]. If the owning entity class is a @MappedSuperclass, this is invalid, and your attribute should reference the correct subclass.
    Bref je suis un peu perdu, et je ne vois pas comment mettre tout cela en place.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par slake13 Voir le message

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @OneToMany(mappedBy = "magasinExpediteur", fetch = FetchType.LAZY)
        private List<Transfert> transfertExpediteur;
        @OneToMany(mappedBy = "magasinDestinataire", fetch = FetchType.LAZY)
        private List<Transfert> transfertDestinataire;
    dans mappedBy il faut le nom d'un champ de l'entité cible…
    il n'y a pas de "magasin" dans "Transfert" …

  3. #3
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 49
    Par défaut
    Salut.
    C'est bon ça fonctionne correctement ! Je te remercie beaucoup et de mon côté je vais encore relire la javadoc pour mieux assimiler tout ça !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Access: double relation entre deux tables
    Par Michael_Access dans le forum Modélisation
    Réponses: 2
    Dernier message: 29/01/2015, 16h34
  2. [XL-2003] Evolution entre deux années dont une est négative
    Par woods27260 dans le forum Excel
    Réponses: 6
    Dernier message: 03/04/2012, 20h16
  3. Supprimer et créer une relation entre deux tables
    Par bassiste dans le forum Administration
    Réponses: 1
    Dernier message: 18/07/2008, 20h20
  4. Attribut dans une relation entre deux entités
    Par garzouille dans le forum Django
    Réponses: 1
    Dernier message: 08/07/2008, 10h16

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