Hibernate 休眠一对多映射外键问题

Hibernate 休眠一对多映射外键问题,hibernate,hibernate-mapping,Hibernate,Hibernate Mapping,我刚开始冬眠。请帮助我理解这一点 我有部门和员工对象。Department正在使用级联类型保存的employee集合。我已经创建了Department对象和employee对象。让我们分别说dept1和emp1。当我保存dept1对象(具有emp1)时,它正在Department和employee表中保存dept1和emp1,但没有外键 除非我在emp1上设置department(dept1),否则它不会保存外键。为什么我要手动设置?不能冬眠吗?这样做有什么原因吗?因为Hibernate文档和J

我刚开始冬眠。请帮助我理解这一点

我有部门和员工对象。Department正在使用级联类型保存的employee集合。我已经创建了Department对象和employee对象。让我们分别说dept1和emp1。当我保存dept1对象(具有emp1)时,它正在Department和employee表中保存dept1和emp1,但没有外键


除非我在emp1上设置department(dept1),否则它不会保存外键。为什么我要手动设置?不能冬眠吗?这样做有什么原因吗?

因为Hibernate文档和JPA规范就是这样告诉您的。在双向关联中,有一个所有者端和一个反向端。所有者端是不具有
mappedBy
属性的端。相反的一侧是具有
mappedBy
属性的一侧

在双向一方域中,所有者方始终是多方(具有foerign密钥的一方)


Hibernate/JPA只关心所有者方。如果不初始化所有者端,它会认为该关联不存在。除非您真的知道自己在做什么,否则一个好的经验法则是初始化关联的两侧,使您的实体图连贯一致

因为Hibernate文档和JPA规范就是这样告诉您的。在双向关联中,有一个所有者端和一个反向端。所有者侧是没有
mappedBy
属性的一方。相反的一侧是具有
mappedBy
属性的一侧

在双向一方域中,所有者方始终是多方(具有foerign密钥的一方)


Hibernate/JPA只关心所有者方。如果不初始化所有者端,它会认为该关联不存在。除非您真的知道自己在做什么,否则一个好的经验法则是初始化关联的两侧,使您的实体图连贯一致

那么Hibernate应该如何猜测您的代码呢?如果您同时具有这两种关系(多对一和一对多),那么设置这两种关系要好得多。那么Hibernate应该如何猜测您的代码?如果您同时具有两种关系(多对一和一对多),则最好同时设置这两种关系。