p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Membre du Club
    Inscrit en
    novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : novembre 2008
    Messages : 308
    Points : 62
    Points
    62

    Par défaut [Hibernate / JPA] Erreur "Unknown mappedBy in .. referenced property unknown: .."

    Bonjour,

    J'utilise JPA/Hibernate.
    J'ai une classe en relation "un à un" vers une autre classe : Localisation <-> RessourceMaterielle. J'utilise les annotation pour faire la persistance.
    RessourceMaterielle est abstraite. De cette classe héritent des classes telles que : Vehicule, ...
    Dans la base de données la classe RessourceMaterielle n'est pas représentée par une table. Ce sont ses classes filles qui sont représentées.
    Classe RessourceMaterielle :
    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
     
    @MappedSuperclass
    public abstract class RessourceMaterielle extends ObjetMetier {
    	private String nom = null;
    	private Localisation localisation = null;
     
            @Column(name = "`NOM`")
    	public String getNom() {
    		return this.nom == null ? null : new String(this.nom);
    	}
     
    	public void setNom(String nom) {
    		this.nom = new String(nom);
    	}
     
    	@OneToOne(cascade={CascadeType.ALL})
        @JoinColumn(name="`LOCALISATION`")
    	public Localisation getLocalisation() {
    		return this.localisation == null ? null : this.localisation.clone();
    	}
     
    	public void setLocalisation(Localisation localisation) {
    		this.localisation = localisation.clone();
    	}
     
    	public RessourceMaterielle(){
     
    	}
     
    }
    Classe Vehicule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    @Entity(name = "VEHICULE")
    @Table(name = "`VEHICULE`")
    public class Vehicule extends RessourceMaterielle {
     
    	public Vehicule() {
    	}
     
    }
    Classe Localisation :
    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
     
    @Entity(name = "LOCALISATION")
    @Table(name = "`LOCALISATION`")
    public class Localisation extends ObjetMetier {
    	private double lon = -1111;
    	private double lat = -1111;
    	private RessourceMaterielle ressourceMaterielle;
     
    	@OneToOne(cascade = { CascadeType.ALL }, mappedBy = "localisation")
    	public RessourceMaterielle getRessourceMaterielle() {
    		return (RessourceMaterielle) (this.ressourceMaterielle == null ? null : this.ressourceMaterielle.clone());
    	}
     
    	public void setRessourceMaterielle(RessourceMaterielle ressourceMaterielle) {
    		this.ressourceMaterielle = ressourceMaterielle;
    	}
     
    	@Column(name = "`LON`")
    	public double getLon() {
    		return this.lon;
    	}
     
    	public void setLon(double lon) {
    		this.lon = lon;
    	}
     
    	@Column(name = "`LAT`")
    	public double getLat() {
    		return this.lat;
    	}
     
    	public void setLat(double lat) {
    		this.lat = lat;
    	}
     
    	public Localisation() {
     
    	}
     
    	public Localisation(double lon, double lat) {
    		this.setLon(lon);
    		this.setLat(lat);
    	}
    }
    En exécutant un test fait l'insertion d'un véhicule (qui hérite de RessourceMaterielle et donc est lié à un attribut localisation) dans la base de données, j'ai l'exception suivante. Est-ce que cette erreur est liée au fait que Vehicule n'est pas mappé, lui même, vers localisation directement ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    org.hibernate.AnnotationException: Unknown mappedBy in: com.organisme.model.localisation.Localisation.ressourceMaterielle, referenced property unknown: com.organisme.model.ressource.RessourceMaterielle.localisation

  2. #2
    Membre Expert Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    décembre 2002
    Messages
    841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2002
    Messages : 841
    Points : 1 056
    Points
    1 056

    Par défaut

    Salut,

    Dans tes entités, tu as des caractères bizarres... (" ` "). Essaies de les supprimer, testes et dis nous si ça fonctionne.
    Do it simple... and RTFM !

  3. #3
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    janvier 2007
    Messages
    1 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : janvier 2007
    Messages : 1 331
    Points : 1 791
    Points
    1 791

    Par défaut

    Effectivement, les back quotes sont certainement inutiles, mais je doute qu'elles soient la cause du problème.
    Dans la section "bizarre", c'est quoi ces utilisations de clone() ?

    Je n'ai jamais implémenté d'héritage sans persister la classe parente, mais en regardant la javadoc de MappedSuperclass, on trouve
    A class designated with the MappedSuperclass annotation can be mapped in the same way as an entity except that the mappings will apply only to its subclasses since no table exists for the mapped superclass itself
    Donc effectivement, RessourceMaterielle.localisation n'est pas un élément mappé. Seuls Vehicule.localisation l'est.
    Du coup, je ne vois pas comment il est envisageable de faire un reverse mapping dans Localisation

Discussions similaires

  1. Erreur au déploiement - Hibernate/JPA
    Par Cafeinoman dans le forum JBoss
    Réponses: 6
    Dernier message: 07/02/2013, 09h18
  2. Réponses: 1
    Dernier message: 28/06/2007, 18h05
  3. Hibernate-Mysql:Erreur de Connexion!!
    Par webtracker dans le forum Hibernate
    Réponses: 3
    Dernier message: 11/05/2006, 01h09
  4. [hibernate][mysql] erreurs
    Par nikalkal dans le forum Hibernate
    Réponses: 1
    Dernier message: 25/04/2006, 17h40
  5. [Hibernate] Proxy erreur
    Par DarkNagash dans le forum Hibernate
    Réponses: 2
    Dernier message: 05/08/2005, 11h32

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