Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate中的多通关系,而不是数据库中的多通关系_Java_Hibernate_Orm - Fatal编程技术网

Java Hibernate中的多通关系,而不是数据库中的多通关系

Java Hibernate中的多通关系,而不是数据库中的多通关系,java,hibernate,orm,Java,Hibernate,Orm,我有一个名为“部门”的实体和另一个名为“学生”的实体。我知道这个系会有很多学生,数据库中这两个表之间应该有关系。但是在我的项目中,DB表已经存在,并且在department表和student表之间没有关系(外键) 在实体类student.java中,有一个关系写为 @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = 'DeptId', nullable = false, insertable = false, updatable = fal

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

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

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = 'DeptId', nullable = false, insertable = false, updatable = false)
Department department
我对现有的代码感到困惑

当我编写一个测试时,我正在通过deptId从DB获取department,并将学生实体设置为

student.setDepartment(department);
这不会填充student表中的DB列“DEPTID”

因为系里没有学生集合,所以我不能将学生设置为

department.addStudents(student);
我不确定我们是否可以坚持@manytone关系,而不使用DB中表之间的关系

请告诉我如何解决此问题,以便使用正确的数据填充student表中的“DEPTID”列

提前感谢,, 你有

@JoinColumn(name='DeptId',nullable=false,insertable=false,updateable=false)
你为什么不试试呢

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

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

您有

@JoinColumn(name='DeptId',nullable=false,insertable=false,updateable=false)
你为什么不试试呢

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


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

您好,很抱歉这么晚才回答您的问题,但我认为回答同样可以帮助其他人。现在您说数据库中已经存在这些表,如果它们
还没有获得一些数据
,那么我建议您
删除它们,在
persistence.xml
文件中激活
表生成策略
,以
创建
,在这种情况下,它将使用所需的关系列重新创建这些表。也不要忘记在
Department.java
类上使用
@OneToMany
注释,以表明其接收许多学生的能力。它与
@ManyToOne
一起使用。嗨,很抱歉这么晚才回答你的问题,但我认为这个回答同样可以帮助其他人。现在您说数据库中已经存在这些表,如果它们
还没有获得一些数据
,那么我建议您
删除它们,在
persistence.xml
文件中激活
表生成策略
,以
创建
,在这种情况下,它将使用所需的关系列重新创建这些表。也不要忘记在
Department.java
类上使用
@OneToMany
注释,以表明其接收许多学生的能力。它与
@ManyToOne

一起使用,你为什么不做一件简单的事情呢?通过将外键应用于引用
部门
表主键的
学生
表,在数据库中建立一对多关系(DEPARTMENT=>STUDENT)。如果数据库中没有适当的约束,映射就不可能在Hibernate中正常工作?通过将外键应用于引用
部门
表主键的
学生
表,在数据库中建立一对多关系(DEPARTMENT=>STUDENT)。如果数据库中没有适当的约束,映射可能无法在Hibernate中正常工作。