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

Java EE Discussion :

Relations EJB : Collection OneToMany vide !


Sujet :

Java EE

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Relations EJB : Collection OneToMany vide !
    Bonjour,

    J'ai un souci avec mes relations OneToMany :

    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
     
    @Table(
        name="user",
        uniqueConstraints=
                @UniqueConstraint(columnNames={"mail"})
    )
    @Entity
    @TransactionManagement(TransactionManagementType.CONTAINER)
    public class User implements Serializable {
     
        @Id
        @Column(name="id")
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        private Integer id;
     
        @OneToMany(mappedBy="user")
        private Set<Address> addresses;
    }
    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
     
    @Table(
        name="address"
    )
    @Entity
    @TransactionManagement(TransactionManagementType.CONTAINER)
    public class Address implements Serializable {
     
        @Id
        @Column(name="id")
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        private Integer id;
     
        @ManyToOne
        @JoinColumn(name="user", referencedColumnName="id", nullable = false)
        private User user;
     
    }
    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
     
     
    @Stateful
    public class EntityRequestImpl implements EntityRequest {
     
       @PersistenceContext
       EntityManager em;
     
     @Override
       public User getUserByMail(String mail){
     
           User user = null;
     
           try {
                Query query = em.createQuery("SELECT u FROM User u WHERE u.mail = ?1");
                query.setParameter(1,mail);
                user = (User) query.getSingleResult();
     
                System.out.println(user.getAddresses().size());
           }
           catch(NoResultException e){
     
           }
     
           return user;
       }
     
    }
    Mon résultat dans le sout est toujours à 0 malgré la présence de tuples en base. Je cherche une solution depuis des jours.. Qu'est ce qui cloche dans mon code ?

    Merci d'avance pour votre aide

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 52
    Points : 70
    Points
    70
    Par défaut
    Tout d'abord @TransactionManagement ne s'utilise pas sur les entitées mais sur les beans session ou mdb.

    Ensuite je te conseille de tester ton mapping dans un main classique sans ejb et sans serveur.
    Faire simple et ajouter petit à petit les difficultés.

    Et enfin, est-ce que la requête retourne un user ?

  3. #3
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Points : 1 532
    Points
    1 532
    Par défaut problème de requête
    Bonjour,

    cette partie me semble bizarre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    
    SELECT u FROM User u WHERE u.mail = ?1 
    le ?1 en ?, non ?

    olivier
    Architecte destructurant,
    be cool, be free

    Il nous reste Debian bien sûr

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 52
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par nathieb Voir le message
    Bonjour,

    cette partie me semble bizarre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    
    SELECT u FROM User u WHERE u.mail = ?1 
    le ?1 en ?, non ?

    olivier
    Non,non c'est les paramètres positionnels (en français ça fait bizarre). Il faut bien écrire ?1 puis ?2 etc...

Discussions similaires

  1. [Relation]Problème mapping OneToMany
    Par Molos dans le forum Doctrine2
    Réponses: 6
    Dernier message: 10/08/2011, 04h57
  2. Réponses: 27
    Dernier message: 19/10/2008, 11h51
  3. Hibernate: many-to-many, collections SET vides
    Par tzikin dans le forum Hibernate
    Réponses: 1
    Dernier message: 20/02/2007, 12h24
  4. Réponses: 7
    Dernier message: 21/01/2007, 12h12
  5. [VB6] [XML][DOM] Collection DOMNodeList vide
    Par Ykh'Drazhir dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 04/01/2005, 14h35

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