我想實現OnetoMany關係兩個表的學生和證書。我有兩個類,Student和Certificates,它們具有從Student類到Certificates類的OnetoMany關係。休眠OnetoMany的關係
學生類別:
@Entity
@Table(name = "student")
public class Student implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "id")
private Integer id;
@OneToMany(cascade = CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="student")
private List<Certificats> listCertificats;
// Getters and Setters
Certificats類:
@Entity
@Table(name = "certificates")
public class Certificates implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "id")
private Integer id;
@ManyToOne
@JoinColumn(name="student_id")
private Student student;
// Getters and Setters
我DAO類必須從數據庫中獲取數據的方法:
@SuppressWarnings("unchecked")
public List<Students> listStudents() {
List<Students> studentList;
studentList= sessionFactory.getCurrentSession().createQuery("from Student").list();
return studentList;
}
現在,當我運行這個方法,List類的Student類中的listCertificats的值始終爲空。但是,我在Student類中獲得了id字段的值。我在這裏做錯了什麼?我查了一些關於Hibernate OnetoMany關係的教程,他們用我實現的相同方式描述。任何將非常感激。
我假設你創建測試數據。您是否確保在保存之前建立兩個實體之間的關係? (student.getListCertificates()。add(certificate); certificate.setStudent(student)),否則hibernate根據內部會話狀態可能會發生意外情況。 –
我比較新。你能詳細解釋一下嗎? –
你需要插入數據到數據庫來閱讀的東西,我的意思是代碼。您使用雙向映射。如果使用不當,可能會導致故障 –