为什么要在 Java 中使用 @JoinTable 注释而不是单向 @OneToMany 注释

Why would you use @JoinTable annotation instead of Unidirectional @OneToMany annotation within Java

我正在 Udemy 上使用 Hibernate(和 JPA)学习持久性,演示者解释了先前讨论的关联的替代方法(单向 OneToOne、双向 OneToOne、单向 OneToMany、双向 OneToMany),称为 @JoinTable JPA 注释。

他提到有时只有一小部分“许多”实体与特定类型的“一个”实体相关联,我们不希望“许多”实体上的字段体现与“一个”实体,因为该字段在大多数情况下将保持为空。 他继续针对这种情况推荐 @JoinTable

我的问题是,考虑到 @JoinTable 选项对 Java 实体的影响,为什么不在“一个”实体上使用单向 @OneToMany 注释并保留“许多”实体原样?除了单向 @OneToMany 带来的功能之外,@JoinTable 从 Java 内部为情况带来哪些附加功能?

那么他显然是错误的,@JoinTable 在这里绝对没有必要,并且会在内存(要存储更多数据)和时间复杂度(另一个 table 加入)方面引入开销。

你说得对,你只需要 @JoinColumn 来映射一对一和一对多关系(如果它应该是双向的,则在另一侧 mappedBy) .

P.S.: 我会考虑进一步学习这门课程,因为即使是 jpa 的基础知识,它似乎也有缺陷。