1

我有一个名为“部门”的实体和另一个名为“学生”的实体。我知道该部门会有很多学生,并且数据库中这两个表之间应该有关系。但是在我的项目中,数据库表已经存在,并且部门和学生表之间没有关系(外键)。

在实体类 student.java 中,有一个关系写成,

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = 'DeptId', nullable = false, insertable = false, updatable = false)
Department department

我对这个现有的代码感到困惑。

当我编写测试时,我通过 deptId 从数据库中获取部门并将学生实体设置为,

student.setDepartment(department);

这不会填充学生表中的数据库列“DEPTID”。

由于部门中没有学生收藏,我无法将学生设置为,

department.addStudents(student);

我不确定我们是否可以坚持 @ManyToOne 关系而不需要 DB 中的表之间的关系。

请告诉我如何解决此问题,以便在学生表中的“DEPTID”列中填充正确的数据。

在此先感谢,BS

4

2 回答 2

1

你有

@JoinColumn(name = 'DeptId', nullable = false, insertable = false, updatable = false) 相反,你为什么不试试

@JoinColumn(name = 'DeptId', nullable = false)

Hibernate 不会检查您放置的映射约束在数据库级别是否有效。它只是假设它是有效的并基于该假设执行查询。

于 2012-12-03T18:44:58.377 回答
0

嗨,很抱歉这么晚才回复您的问题,但我认为回复同样可以帮助另一个人。现在您说这些表已经存在于数据库中,如果它们haven't yet got some data那么我建议您,请在您的文件中drop激活您的,在这种情况下,它将使用您想要的关系列重新创建这些表。不要忘记在课堂上使用注释来表明它对许多学生的接待能力。它与Table Generation Strategypersistence.xmlCreate@OneToManyDepartment.java@ManyToOne

于 2015-04-03T10:49:45.870 回答