[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:
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:
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:
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:
1 2
|
org.hibernate.AnnotationException: Unknown mappedBy in: com.organisme.model.localisation.Localisation.ressourceMaterielle, referenced property unknown: com.organisme.model.ressource.RessourceMaterielle.localisation |