定義
joinColumns = {@JoinColumn(...)},
inverseJoinColumns = {@JoinColumn(...)})
參數在它自己的列
通過閱讀第一句話,我可以說這是OneToOne,正如你所說每個學生都有一所房子。
如果你考慮一個場景,每個學生可以有很多房子。 然後,這種關係將是OneToMany,並且只有兩個表的學生和學生擁有OneToMany與House(POJO班級)的房子。
如果你認爲連房子都可以屬於很多學生。 然後,你應該去ManyToMany與你目前的表學生,房屋和students_house表(橋表)。
Student.java
@Entity
@Table(name="students")
public class Student {
private int studentId;// set the column name with @JoinColumn annotation if you want
private int standard;// to be different from the variable name
private int grade;
private int age;
@OneToMany
@JoinTable(name="students_houses",
joinColumns = @JoinColumn(name="studentId"),
inverseJoinColumns = @JoinColumn(name="houseId"))
private List<House> houses;
// getters and setters
}
House.java
@Entity
@Table(name="houses")
public class House {
private int houseId;
private String color;
private int houseCapacity;
@OneToMany
@JoinTable(name="students_houses",
joinColumns = @JoinColumn(name="houseId"),
inverseJoinColumns = @JoinColumn(name="studentId"))
private List<Student> students;
// getters and setters
}
如果你想比這兩個表中,你可以的外鍵與其它附加字段創建自定義的表橋創建一個自定義Bridge類,每個類具有OneToMany和Bridge類。和Bridge類有兩個類的ManyToOne。
您可以參閱計算器文檔進行進一步的例子