JPA + Multiple ManyToOne加入相同的列

时间:2012-10-28 10:15:41

标签: orm mapping jpa-2.0

SchoolClass实体具有由schoolID,成绩和部分组成的复合键。 学生实体中的关键是userName和schoolID的组合。 我想在我的SchoolClass中添加两个学生对象的外键。我希望在所有映射中使用SchoolClass表中的相同列schoolID,我想知道这是否是正确的方法吗?

@Entity
public class SchoolClass {

    @Column(unique=true, nullable=false)
    @EmbeddedId
    private SchoolClassPK key;

    @ManyToOne(optional = true)
    @JoinColumns({
        @JoinColumn(name="classRep1", referencedColumnName="userName", nullable = true),
        @JoinColumn(name="schoolID", referencedColumnName="schoolID", nullable = true),
    }) 
    private Student classRep1;

    @ManyToOne(optional = true)
    @JoinColumns({
        @JoinColumn(name="classRep2", referencedColumnName="userName", nullable = true),
        @JoinColumn(name="schoolID", referencedColumnName="schoolID", nullable = true),
    }) 
    private Student classRep2;
......
}

1 个答案:

答案 0 :(得分:0)

最好只删除复合键,而不是在所涉及的实体上使用自动生成的键。