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

Hibernate Java Discussion :

OneToMany - Annotation


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de rgomes
    Homme Profil pro
    IT Developer JAVA Senior
    Inscrit en
    Juin 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : IT Developer JAVA Senior
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2004
    Messages : 128
    Par défaut OneToMany - Annotation
    Hello,

    Je cherche à créer une relation du type :
    - une entité User possède zéro ou plusieures entité(s) Adress - une adresse ne peut exister sans User.
    Question basique : est-ce bien un one-to-many ?
    Niveau DB, dans la table user pas de référence sur les adresses; dans la table Adress une fk(iduser) : cela vous semble bon ?
    Me manque t'il des annotations pour les contraintes citées ?

    UserEntity :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    @Entity
    @EntityListeners({ LastUpdateListener.class })
    @Table(name = "user")
    @AttributeOverrides({
        @AttributeOverride(name = "entityId", column = @Column(name = "iduser")),
        @AttributeOverride(name = "creationDate", column = @Column(name = "ohdtcre")) })
    public class UserEntity extends DefaultEntity {
    	@OneToMany(mappedBy = "user")
    	public Set<AdressEntity> adresses;
    AdressEntity :
    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
     
    @Entity
    @EntityListeners({ LastUpdateListener.class })
    @Table(name = "adress")
    @AttributeOverrides({
        @AttributeOverride(name = "entityId", column = @Column(name = "idadre")),
        @AttributeOverride(name = "lastModificationDate", column = @Column(name = "ohdatmod")),
        @AttributeOverride(name = "creationDate", column = @Column(name = "ohdatcre")) })
    public class AdressEntity extends DefaultEntity {
     
    	@Column(name = "txadrerue")
    	private String rue;
     
    	@ManyToOne
    	@JoinColumn(name = "iduser")
    	private UserEntity user;
    Mon soucis : depuis que j'ai migré aux annotations, 1 user qui a 2 adresses me retourne 2 entity au lieu d'une entity contenant la liste des 2 adresses...

    Help, merci !

  2. #2
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 51
    Par défaut
    Salut,

    Je ne suis pas sure mais cela pourrait être à cause de la similitude entre :
    @Table(name = "user")
    @OneToMany(mappedBy = "user")
    private UserEntity user

    Est ce que vous pouvez tester avec le code ci dessous :


    Citation Envoyé par rgomes Voir le message
    Hello,

    Je cherche à créer une relation du type :
    - une entité User possède zéro ou plusieures entité(s) Adress - une adresse ne peut exister sans User.
    Question basique : est-ce bien un one-to-many ?
    Niveau DB, dans la table user pas de référence sur les adresses; dans la table Adress une fk(iduser) : cela vous semble bon ?
    Me manque t'il des annotations pour les contraintes citées ?

    UserEntity :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @Entity
    @EntityListeners({ LastUpdateListener.class })
    @Table(name = "user")
    @AttributeOverrides({
        @AttributeOverride(name = "entityId", column = @Column(name = "iduser")),
        @AttributeOverride(name = "creationDate", column = @Column(name = "ohdtcre")) })
    public class UserEntity extends DefaultEntity {
    	@OneToMany(mappedBy = "addrUser")
    	public Set<AdressEntity> adresses;
    AdressEntity :
    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
    @Entity
    @EntityListeners({ LastUpdateListener.class })
    @Table(name = "adress")
    @AttributeOverrides({
        @AttributeOverride(name = "entityId", column = @Column(name = "idadre")),
        @AttributeOverride(name = "lastModificationDate", column = @Column(name = "ohdatmod")),
        @AttributeOverride(name = "creationDate", column = @Column(name = "ohdatcre")) })
    public class AdressEntity extends DefaultEntity {
    
    	@Column(name = "txadrerue")
    	private String rue;
    
    	@ManyToOne
    	@JoinColumn(name = "iduser")
    	private UserEntity addrUser;
    Mon soucis : depuis que j'ai migré aux annotations, 1 user qui a 2 adresses me retourne 2 entity au lieu d'une entity contenant la liste des 2 adresses...

    Help, merci !

    J’espère que ça pourra vous aider
    A+

  3. #3
    Membre confirmé Avatar de rgomes
    Homme Profil pro
    IT Developer JAVA Senior
    Inscrit en
    Juin 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : IT Developer JAVA Senior
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2004
    Messages : 128
    Par défaut
    Merci pour la réponse mais ça n'a pas résolu le problème.

    Des avis ?

    Merci !

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Par défaut
    Mon soucis : depuis que j'ai migré aux annotations, 1 user qui a 2 adresses me retourne 2 entity au lieu d'une entity contenant la liste des 2 adresses...
    Je comprend peut-être mal ta phrase mais cela me semble normal que depuis un user tu obtiennes deux AdressEntity contenu dans un Set.

  5. #5
    Membre confirmé Avatar de rgomes
    Homme Profil pro
    IT Developer JAVA Senior
    Inscrit en
    Juin 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : IT Developer JAVA Senior
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2004
    Messages : 128
    Par défaut
    Au lieu d'avoir une entité user contenant un set de 2 adresses, j'ai 2 entités user.
    Merci pour toute aide

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Par défaut
    Le problème vient peut-être de ta requête , et pas des annotations.

    Sinon tu peux aussi spécifier ta clé étrangère sur la table "Address" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @JoinColumn(name = "iduser", referencedColumnName="foreignKeyUserEntity")
    @ManyToOne
    private UserEntity addrUser;

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

Discussions similaires

  1. Problème avec l'annotation oneToMany
    Par kata001 dans le forum JPA
    Réponses: 1
    Dernier message: 03/01/2014, 08h31
  2. Aide sur les annotations Hibernate - @OneToMany
    Par gargantua dans le forum Hibernate
    Réponses: 1
    Dernier message: 19/03/2011, 16h33
  3. [EJB3 Entity] Problème avec les annotations de type @OneToMany
    Par Hello_World dans le forum Java EE
    Réponses: 6
    Dernier message: 30/08/2010, 14h20
  4. Annotation OneToMany probleme.
    Par zuzuu dans le forum Hibernate
    Réponses: 3
    Dernier message: 10/02/2009, 13h15

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