我是 Hibernate 新手,我正在尝试学习映射策略。现在我能够实现单向和双向映射。我发现在单向
映射的情况下严格需要@JoinColumn
,但在双向
映射的情况下则不需要。
为什么单向
映射时需要@JoinColumn
或@JoinTable
,而双向
映射时可选?
最佳答案
我不会说在双向映射的情况下它是可选的。 它仅在拥有方指定,这意味着在拥有方指定它是可选的且多余的。这也是不可取的,因为当连接列名称更改时,您必须在两个类中进行更改。
我做了一些测试,Hiberante 会允许这样做..但为什么要这样做。
由于单向映射仅配置了拥有方,并且您不希望从关系的另一方加入这些实体,因此暗示:
@JoinColumn
(适用于单向@ManyToOne)
或
@JoinTable
(适用于单向@OneToMany)
必须使用。
尝试阅读这篇文章:examples
关于java - hibernate : @JoinColumn behaviour in uni-directional and bi-directional mapping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42345114/