2015-10-17 25 views
0

我正在使用休眠版本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版本中修復了這個錯誤。

回答

1

解決了這個問題:

我錯過了我的Hibernate配置文件: <mapping class="home.practice.Address"/>

我前面定義 <mapping class="home.practice.Employee"/>而不是地址類。