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 :

Obtenir les objets liés


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 117
    Par défaut Obtenir les objets liés
    Bonjour,

    J'essaye de créer une application de test en Java EE JSF JPA...

    Voici mes entités:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    /**
     * Entity implementation class for Entity: Abonnement
     *
     */
    @Entity
    @Table(name="Abonnement")
    public class Abonnement implements Serializable {
     
        private static final long serialVersionUID = 1L;
     
        @Id
        @GeneratedValue( strategy = GenerationType.IDENTITY)
        @Column(name="IdAbonnement")
        private int idAbonnement;
     
        @OneToMany(mappedBy="abonnement", fetch=FetchType.EAGER)
        private Set<User> user;
    }
     
    /**
     * Entity implementation class for Entity: User
     *
     */
    @Entity
    @Table(name="User")
    public class User implements Serializable {
     
        private static final long serialVersionUID = 1L;
     
        @Id
        @GeneratedValue( strategy = GenerationType.IDENTITY)
        @Column(name="IdUser")
        private int idUser;
     
        @Column(name="NomUser")
        private String nomUser;
     
        @ManyToOne
        @JoinColumn(name="IdAbonnement")
        private Abonnement abonnement;
    }
     
    public User user_by_idUser (int idUser) throws DAOException {
     
            User user = null;
            try {
                user = em.find(User.class, idUser);
                return user;
     
            } catch ( DAOException e ) {
                    throw new DAOException( e );
            }
    }
    Avec la méthode user_by_idUser() je récupère bien le user avec son idUser mais je souhaiterais récupérer en même temps l'abonnement.

    Suis je obligé d'écrire une requête JPQL avec join ...?

    Merci d'avance pour votre aide.

  2. #2
    Membre émérite
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Par défaut
    Logiquement, si tu fais un user.getAbonnement() sur le user que tu as récupéré, tu devrais avoir accès à son abonnement. JPA va effectivement faire un join, mais il te masque l'opération.

  3. #3
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    Salut,
    non t´as pas besoin puis que tu as deja la variable dans la classe User:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @ManyToOne
    	@JoinColumn(name="IdAbonnement")
    	private Abonnement abonnement;
    il suffit d´appeler :
    Eric

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 117
    Par défaut
    Merci.

    Effectivement, c'est bon. En fait, je ne récupère rien car le champ idAbonnement dans ma table été à NULL.

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

Discussions similaires

  1. [Core] Hibernate ManyToMany. cherer les objets non liés
    Par sbousfiha88 dans le forum Hibernate
    Réponses: 0
    Dernier message: 03/01/2014, 03h17
  2. Réponses: 0
    Dernier message: 12/01/2011, 20h03
  3. [JNI] : Obtenir les champs d'un objet inclus dans un objet
    Par jojo29 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 27/04/2006, 14h36
  4. [JVM]Comment obtenir les objets en mémoire ?
    Par ZeKiD dans le forum Général Java
    Réponses: 6
    Dernier message: 15/12/2005, 09h59
  5. [C#][ProgressBar]Obtenir les données depuis un autre objet
    Par Kcirtap dans le forum Windows Forms
    Réponses: 7
    Dernier message: 26/10/2005, 12h56

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