2015-10-17 50 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"/>而不是地址类。