gpt4 book ai didi

hibernate - JPA 单向 @OneToOne 与 Hibernate 的 @ManyToOne - 没有区别吗?

转载 作者:行者123 更新时间:2023-12-02 23:37:09 26 4
gpt4 key购买 nike

根据书Pro JPA 2单向@ManyToOne和@OneToOne之间的主要区别在于@OneToOne:

Only one instance of the source entity can refer to the same target entity instance. In other words, the target entity instance is not shared among the source entity instances. In the database, this equates to having a uniqueness constraint on the source foreign key column (that is, the foreign key column in the source entity table).

问题是,当我在实体上创建这样的映射并让 Hibernate 创建模式时,根本没有创建唯一的约束。为什么?因此,对我来说,如果我必须为映射显式定义唯一约束,则 @ManyToOne 和 @OneToOne 之间没有区别。我可以为他们两个做这件事,这没有什么区别。这是正确的行为吗?

最佳答案

如果关联是 ManyToOne,则没有理由使用 OneToOne,反之亦然。使用适当的注释,反射(reflect)关联基数的现实情况。不这样做只会让应用程序的开发人员感到困惑,如果不是 Hibernate 本身的话。

无论数据库中源的唯一性是否受到限制,都不会改变 Hibernate 的任何内容。根据我的经验,Hibernate 确实在 OneToOne 的情况下创建唯一约束,如果没有,那么您应该创建它(无论如何我都不会使用 Hibernate 创建模式,除了一个又快又脏的演示应用程序)。

但是,当然,如果存在唯一约束,并且您尝试使用同一目标实体创建两个不同的实体,则由于数据库唯一约束抛出错误,该操作将会失败。

关于hibernate - JPA 单向 @OneToOne 与 Hibernate 的 @ManyToOne - 没有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21789769/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com