Soy un novato en Hibernate. Yo estaba tratando de crear un uno-a-uno entre la persona y la entidad PersonDetail en el siguiente código:Significado del atributo mappedBy en una anotación?
@Entity
public class Person {
private int personId;
private String personName;
private PersonDetail personDetail;
@OneToOne(mappedBy="person")
public PersonDetail getPersonDetail() {
return personDetail;
}
public void setPersonDetail(PersonDetail personDetail) {
this.personDetail = personDetail;
}
@Id
@GeneratedValue
public int getPersonId() {
return personId;
}
public void setPersonId(int personId) {
this.personId = personId;
}
public String getPersonName() {
return personName;
}
public void setPersonName(String personName) {
this.personName = personName;
}
}
@Entity
public class PersonDetail {
private int personDetailId;
private String zipCode;
private String job;
private double income;
private Person person;
@OneToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
@Id
@GeneratedValue
public int getPersonDetailId() {
return personDetailId;
}
public void setPersonDetailId(int personDetailId) {
this.personDetailId = personDetailId;
}
public String getZipCode() {
return zipCode;
}
public void setZipCode(String zipCode) {
this.zipCode = zipCode;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public double getIncome() {
return income;
}
public void setIncome(double income) {
this.income = income;
}
}
Quiero que PersonDetail debe ser la entidad propietaria (Sé que viceversa es correcta, pero sólo quiero probar). Lo que no entiendo es el uso del atributo mappedBy que puse en la entidad Person. Si lo elimino, aparece el siguiente error: "No se pudo determinar el tipo para: com.hibernate.onetoonemapping.PersonDetail, en la tabla: Persona, para las columnas: [org.hibernate.mapping.Column (personDetail)]"
¿Qué hace este atributo mappedBy? He leído que el atributo mappedBy se coloca en el lado no propietario. Pero, ¿qué es exactamente lo que hace?