【发布时间】:2012-12-03 18:15:42
【问题描述】:
我有一个名为“部门”的实体和另一个名为“学生”的实体。我知道该部门会有很多学生,并且数据库中这两个表之间应该有关系。但是在我的项目中,数据库表已经存在,并且部门和学生表之间没有关系(外键)。
在实体类 student.java 中,有一个关系写成,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = 'DeptId', nullable = false, insertable = false, updatable = false)
Department department
我对这个现有的代码感到困惑。
当我编写测试时,我通过 deptId 从 DB 中获取部门并将学生实体设置为,
student.setDepartment(department);
这不会填充学生表中的数据库列“DEPTID”。
由于部门没有学生收藏,我无法将学生设置为,
department.addStudents(student);
我不确定我们是否可以坚持 @ManyToOne 关系而不需要 DB 中的表之间的关系。
请告诉我如何解决此问题,以便学生表中的“DEPTID”列填充正确的数据。
提前致谢, BS
【问题讨论】:
-
与其迷惑自己,不如做一件简单的事?通过对引用
DEPARTMENT表的主键的STUDENT表应用外键,在数据库中建立一对多关系(部门=> 学生)。如果您的数据库中没有适当的约束,映射可能无法在 Hibernate 中正常工作。