休眠。如何将条目添加到具有来自 Hibernate 中 2 个不同表的 2 个外键的表中?

Posted

技术标签:

【中文标题】休眠。如何将条目添加到具有来自 Hibernate 中 2 个不同表的 2 个外键的表中?【英文标题】:Hibernate. How can I add an entry to a table that has 2 foreign keys from 2 different tables in Hibernate? 【发布时间】:2021-10-28 02:12:48 【问题描述】:

我有三张桌子

    用户 订购 发票

User 有 @OnetoMany 映射到 Invoice 表,Order 有 @OnetoMany 映射到 Invoice 表。这意味着,Invoice 表有 2 个外键,一个来自 User 表,另一个来自 Order 表(比如 'user_fk' 和 'order_fk ')。

在休眠状态下,我无法通过用户添加发票。它给出了一个错误提示

“'order_fk' 列不能为空”

当我尝试使用 Order 表时也会发生同样的情况。我明白为什么会出现这个错误。我想知道这个问题的解决方案。如何向具有来自 Hibernate 中 2 个不同表的 2 个外键的表添加条目?

【问题讨论】:

如果@ManytoMany 在两个表之间,我们有第三个表.. 如果你可以考虑类似的情况,比如有第四个或第五个表 @Sagii 是的,有第四张和第五张桌子是一种选择。但是有没有更好的方法只用 3 张桌子? 【参考方案1】:

您应该首先创建用户和订单。然后,不要通过用户创建发票,而是尝试使用给定的用户和订单创建发票对象。保存此类对象应该没有任何问题。 如果这无济于事,请尝试添加数据库架构和用于创建这些对象并将其保存到数据库的代码。

【讨论】:

知道了,谢谢!此外,这意味着每次为特定的 user_id 和 order_id 创建 Invoice 时,我都应该从数据库中获取 User 和 Order 对象,对吧? 是的,正确的。这是您如何做到这一点的帮助 - ***.com/a/5413145/7100461

以上是关于休眠。如何将条目添加到具有来自 Hibernate 中 2 个不同表的 2 个外键的表中?的主要内容,如果未能解决你的问题,请参考以下文章

休眠:org.hibernate.AssertionFailure:com.xxx.Bean 条目中的空 id

Hibernate 5.1.0 错误无法执行解组并且找不到元素“休眠配置”的声明

具有 OneToMany 关系的休眠重复条目

Hibernate -- 将具有单个值的视图映射到只读字段

BoneCP 和休眠

多对多集 - 添加条目 - org.hibernate.HibernateException:找到对集合的共享引用: