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 :

Annotation OneToMany probleme.


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Par défaut Annotation OneToMany probleme.
    Bonjour,

    C'est la première annotation de ce genre que je réalise et après avoir parcouru de nombreux site où il est à peu prés donnée la même définition, je n'arrive pas à comprendre pourquoi je conserve cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class:
    Sachant que j'ai deux classe (@Entity) : Une personne et une téléphone et je voudrais définir la possession de plusieurs téléphone par une personne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     @OneToMany(mappedBy="numero",
                cascade=CascadeType.ALL, 
                fetch=FetchType.EAGER)
    	private List<Telephone> telephones;
    Dans la classe Personne, et dans la classe Telephone, nous retrouvons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    @Entity
    public class Telephone implements Serializable{
    	@Id
    	private String numero;
     
    	public String getNumero() {
    		return numero;
    	}
     
    	public void setNumero(String numero) {
    		this.numero = numero;
    	}
    }
    C'est le cas le plus simple pourtant ?

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 152
    Par défaut
    Le problème est simple, dans une relation OneToMany ou ManyToMany un mapping doit être réalisé entre une classe et un objet (instance de cette classe) situé dans la classe voulu.
    De mannière concrète tu as:
    <Personne> 1 --------- * <Telephone>
    tu as bien une relation OneToMany dans "Personne" et ManyToOne dans "Telephone".
    Au niveau de la première relation, le mapping doit faire référence à un objet de type "Personne" dans l'entity "Telephone".
    Remplace donc la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @OneToMany(mappedBy="numero",
                cascade=CascadeType.ALL, 
                fetch=FetchType.EAGER)
    	private List<Telephone> telephones;
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @OneToMany(mappedBy="personne",
                cascade=CascadeType.ALL, 
                fetch=FetchType.EAGER)
    	private List<Telephone> telephones;
    dans l'entity "Personne"

    et dans "Telephone" tu auras:

    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
    @Entity
    public class Telephone implements Serializable{
    	@Id
    	private String numero;
                    
                 @ManyToOne
                     @JoinColumn(name = "personne_fk")
                    private Personne personne;
    
    	public String getNumero() {
    		return numero;
    	}
     
    	public void setNumero(String numero) {
    		this.numero = numero;
    	}
    }

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Par défaut
    Merci pour ta réponse, mais dans ma classe personne, je ne conserve pas la valeur de la personne :

    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
     
    @Entity
    public class Telephone implements Serializable{
     
    	@Id
    	private String numero;
     
    	public String getNumero() {
    		return numero;
    	}
     
    	public void setNumero(String numero) {
    		this.numero = numero;
    	}
     
    	public TypeTelephone getType() {
    		return type;
    	}
     
    	public void setType(TypeTelephone type) {
    		this.type = type;
    	}
     
    	private TypeTelephone type;
    }
    C'est un lien unidirectionnel depuis la personne vers son numéro...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Par défaut
    J'ai mis à la place @CollectionOfElements et cela marche.

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. Probleme avec l'annotation IndexColumn
    Par X448GN dans le forum Hibernate
    Réponses: 1
    Dernier message: 22/01/2009, 19h03
  3. Probleme de persistance OneToMany
    Par tchang dans le forum JPA
    Réponses: 8
    Dernier message: 12/01/2008, 06h30
  4. Tomcat hibernate annotation DAO probleme mapping
    Par bibi73 dans le forum Hibernate
    Réponses: 20
    Dernier message: 20/08/2007, 14h40
  5. Réponses: 4
    Dernier message: 14/06/2006, 11h49

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