1

我是新来的冬眠。请帮助我理解这一点。

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

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

4

1 回答 1

4

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

在双向 OneToMany 中,所有者方始终是多方(拥有外键的一方)。

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

于 2012-07-22T22:04:20.517 回答