我正在使用休眠版本5,並在嘗試與我的員工和地址實體進行雙向一對一映射時出現錯誤。註解異常:未知mappedBy在休眠時出錯
異常線程 「main」 org.hibernate.AnnotationException:未知 的mappedBy在:home.practice.Employee.addr,引用未知屬性:在 org.hibernate.cfg home.practice.Address.employee .OneToOneSecondPass.doSecondPass(OneToOneSecondPass.java:147) 在 org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1659) 在 org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java :1634) at org.hibernate.boot.model.proc ess.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:278) 在 org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83) 在 org.hibernate.boot.internal。 MetadataBuilderImpl.build(MetadataBuilderImpl.java:418) 在 org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87) 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:692) 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724) 在home.practice.mainClass.main(mainClass.java:24)
實體員工
package home.practice;
import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@Table(name="EMP")
@SequenceGenerator(name="seq", sequenceName="TAB_CUSTOMER_SEQ", allocationSize=100)
public class Employee implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seq")
@Column(name="EMPNO",unique=true,nullable=false,length=6)
private int empno;
@Column(name="ENAME",unique=false,nullable=false,length=20)
private String name;
@OneToOne(mappedBy="employee",cascade={CascadeType.ALL})
private Address addr;
public Address getAddr() {
return addr;
}
public void setAddr(Address addr) {
this.addr = addr;
}
public int getEmpno() {
return empno;
}
public void setEmpno(int empno) {
this.empno = empno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
地址實體
package home.practice;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
@Entity
@Table(name="ADDRESS")
public class Address implements Serializable{
@Column(name="address_line1")
private String line1;
@Column(name="address_line2")
private String line2;
@Column(name="zip")
private long zip;
@OneToOne
@PrimaryKeyJoinColumn
private Employee employee;
@Id
@Column(name="EMPNO",unique=true,nullable=false,length=6)
@GeneratedValue(generator="gen")
@GenericGenerator(name="gen", strategy = "foreign",parameters={ @Parameter(name="property",value="employee")})
private int empno;
public Employee getEmployee() {
return employee;
}
public void setEmployee(Employee employee) {
this.employee = employee;
}
public int getEmpno() {
return empno;
}
public void setEmpno(int empno) {
this.empno = empno;
}
public int getAddressId() {
return AddressId;
}
public void setAddressId(int addressId) {
AddressId = addressId;
}
@Id
int AddressId;
public String getLine1() {
return line1;
}
public void setLine1(String line1) {
this.line1 = line1;
}
public String getLine2() {
return line2;
}
public void setLine2(String line2) {
this.line2 = line2;
}
public long getZip() {
return zip;
}
public void setZip(long zip) {
this.zip = zip;
}
}
有人可以看看這個,讓我知道,如果它是錯誤處於休眠或我很想念我的代碼的東西嗎?我已經嘗試了其他線程中的相同問題的一些解決方案,但無濟於事。早些時候在hibernate中有類似的錯誤,但是在4.2版本中修復了這個錯誤。