2017-06-15 68 views
0

让我们说一个类/实体名为学生,其包含一个ID,父亲的职业和母亲的职业和实体类都是这样在Hibernate中的另一个实体使用相同的实体两次

Student类

@Entity 
@Table(name = "student") 
public class Student { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(nullable = false, unique = true, updatable = false) 
    private int id; 

    @OneToOne 
    @JoinColumn(name = "occupationId") 
    Occupation fathersOccupation; 

    @OneToOne 
    @JoinColumn(name = "occupationId") 
    Occupation mothersOccupation; 

} 

和职业类

@Entity 
@Table(name = "occupation") 
public class Occupation { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "occupationId") 
    int occupationId; 

    @Column 
    String title; 

} 

当我试图两个父亲的职业和母亲的职业@OneToOne映射是引发异常,Repeated column in mapping for entity。我尝试加入@Column(name="<columnName>"),但不允许。我真的希望这两个字段fathersOccupationmothersOccupationoneToOne映射在学生表中。任何人都可以帮我解决这个问题吗?任何帮助将不胜感激。请询问你是否需要更多细节。

回答

2

@JoinColumn指定实体中FK列的名称。

你的学生实体有2个FK朝着职业,一个是为了职业,另一个是为了职业,另外一个是为了职业,你定义了两次。理想情况下,您的学生表中应该有fathers_occupation_idmothers_occupation_id字段以及实体中的相同属性。

所以你应该为每个人在你的学生表中放置相应的列名。

@JoinColumn(name ="fathers_occupation_id") 
Occupation fathersOccupation; 

@JoinColumn(name="mothers_occupation_id") 
Occupation mothersOccupation; 
相关问题