0

假设我有一个如图 1 所示的关系(客户和 AtmCard 之间的@OneToOne,一方面是强制性的,另一方面不是)。

我是否正确地说要在 AtmCard 端强制执行客户的强制方面,我需要在未来定义 a@JoinColumn(nullable = false)以及我的 @OneToOne 注释,如图 2 所示

如果我没有将这个 @JoinColumn 注释定义optional为 false,会发生什么?@JoinColumn(nullable = false) 到底是做什么的,为什么我应该只将它应用于所有 @OneToOne 和 @ManyToOne 关系?

作为参考,图 3显示了我在客户端的注释映射。谢谢!

4

1 回答 1

0

你会在这里和本教程中找到一个很好的解释

但通常您可以在您的实体中实现双向性(意味着您可以执行 customer.getAtm() 或 atm.getCustomer()),而无需在两个表中使用 FK 创建 2 列(JPA 将使用连接来获取某些内容)。您通常会在子实体 (ATM) 上添加可为空的 false,因为 ATM 不能在没有客户的情况下存在,但客户可以在没有 ATM 的情况下存在(现实世界就是这种情况,除非您的业务不同,否则您应该强制它也是父母)

我们通常添加这些类型以帮助我们保持 DB 内容有效

于 2022-01-15T12:29:56.540 回答