Hibernate:在另一个表中引用复合PK作为外键

时间:2015-06-06 05:17:39

标签: java hibernate jpa hibernate-mapping

我有两个表与一对多关系:

Student
-------
Integer Roll_No (pk)
Integer Class (pk)
.....


Attendance
-------
Long Id (Pk)
Integer Roll_No (fk to Student.Roll_No)
Integer Class (fk to Student.Class)
.....

如何在hibernate中为这两个表进行映射。请帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

You can create a composite id class that only have the Student:

@Embeddable
public class Attendance implements java.io.Serializable {

    @Id
    @GeneratedValue
    private Integer id;

    @ManyToOne(cascade = {}, fetch = FetchType.LAZY)
    @JoinColumn(name = "Roll_no", updatable = true)
    private Student Roll_no;

    @OneToMany(cascade = {}, fetch = FetchType.LAZY)
    @JoinColumn(name = "Class", updatable = true)
    Private Student Class;
    // ...
}

@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class Student{

    @Id
    public Roll_no  getRoll_no()
    public Class getClass()
    // ...
}