0
我的要求是有每個班級的班級和學生名單。每個學生必須在零或最多一個班級。我的代碼如下,但在數據庫中,每個學生可以在許多課程中。如何讓每個學生都只有一個班,只有一個班?如何強制零對一的關係?
學生項目表如下
StudentItem
id student_id code
1 1 233
2 5 453
3 1 567
4 6 565
實體
@Entity
public class MyClass{
@Id
@GeneratedValue
private long id;
@OneToMany(cascade = CascadeType.ALL)
@LazyCollection(LazyCollectionOption.FALSE)
private List<StudentItem> students;
private String season;
...
}
@Entity
public class StudentItem{
@Id
@GeneratedValue
private long id;
@OneToOne
private Student student;
private String code;
...
}
@Entity
public class Student{
@Id
@GeneratedValue
private long id;
private String fname;
private String lname;
....
}
在你的學生課堂中有一個「classId」字段。如果該字段爲空,則學生在0級。如果他在一個班上,只要把班級ID放在那個領域,你就完成了......它的設計方式確實更適合一對多的關係(我從來沒有在關係中談論過0, '0'沒有關係)... –
不,不要存儲其他實體的ID。使用關聯。你的映射很好。如果你想確保一個學生最多隻有一個班級,那麼你應該對'StudentItem.student_id'有一個唯一的約束。 –