当前位置: 首页 > 知识库问答 >
问题:

具有共享主键的Hibernate拥有实体端

奚飞星
2023-03-14

我在读下面的文章:

然而,student实体是用mappedBy注释的,我知道任何用mappedBy注释的实体都是相反的一面。谁能解释一下这个吗?

@Entity
@Table(name = "STUDENT")

public class Student {


@Id
@GeneratedValue
@Column(name = "STUDENT_ID")
private long id;

@Column(name = "FIRST_NAME")
private String firstName;

@Column(name = "LAST_NAME")
private String lastName;

@Column(name = "SECTION")
private String section;

@OneToOne(mappedBy="student", cascade = CascadeType.ALL)
private Address address;

2-哪个ID是外键?@PrimaryKeyJoinColumn在Address实体中使用,这意味着地址Id是主键和外键吗?在下面的文章中,它们有相同的示例,但它是单向的:

http://websystique.com/hibernate/hibernate-one-to-one-direction-with-shared-primary-key-annotation-example/

您可以注意到@PrimaryKeyJoinColumn的位置已经更改,但是地址仍然是外键。哪个Id将是外键。

共有1个答案

方琦
2023-03-14

>

  • 在本例中,Address确实是关联的所有者。你完全正确:有mappedBy attrobute的一边是相反的一边。

    因为Address是所有者端,而且它的ID也是一个联接列,所以它也应该是一个外键(就像ManyToOne关联的联接列也应该是一个FK一样)。注意,这个选择意味着没有学生地址不能存在。

  •  类似资料:
    • 问题内容: 我正在尝试使用JPA / Hibernate设置以下表: 可能有很多用户,每个用户最多只能有一个验证码,也可能没有。 这是我的课程: 我创建一个用户,然后尝试使用以下代码添加验证代码: 当我尝试运行它时,我收到org.hibernate.PersistentObjectException:分离的实体传递给持久化:用户 我还尝试在Validation类中使用以下代码: 当我创建验证码时,

    • 我已将Hibernate缓存从EHCache切换到Infinispan,现在在修改具有复合主键的实体时遇到异常。实体如下: 嵌入式Id类如下: 这两个类都有合理的方法。 只有当集群中有多个服务器时,才会发生异常。异常出现在正在更新的服务器上。堆栈跟踪如下: 以前有人见过这个错误吗?infinispan似乎没有正确序列化嵌入的id类。 我使用的是Hibernate 4.3.5和Infinispan

    • 我有一个实体,它的复合主键由两个字段组成,其中一个也是复合外键的一部分。 背景:我有实体<代码>人员 、<代码>区域 和<代码>会话 。 与具有多对多关系,使用称为“和实体。 所以,我有,主键为(,)。本身是的外键。 也有一个字段。我希望(,)是的复合外键。 我的PersonSession代码: } 这看起来不错,它在数据库中创建了所有正确的关系。当我尝试插入个性化会话对象时,问题就出现了——ar

    • 问题内容: 尝试更新我的实体时遇到以下问题: 我有一个父实体,并且有一些子实体。当我尝试更新它时,我将获取所有要设置为此集合的引用并进行设置。 以下代码表示我的映射: 根据此,我尝试仅清理Set <..>:如何“可能”解决问题,但没有成功。 如果您有任何想法,请告诉我。 谢谢! 问题答案: 实际上,我的问题是关于实体的等于和哈希码。遗留代码会带来很多问题,永远不要忘记对其进行检查。我所做的只是保留

    • 以此作为我的基点:https://vladmihalcea.com/the-best-way-to-map-a-many-to-many-association-with-extra-columns-when-using-jpa-and-hibernate/ 我有一个名为 Attendance 的实体,它有一个 emebedid AttendacneId,它有两列 lectureId (strin

    • 我是初学Hibernate的,我不知道如何使用JPA或Hibernate注释来映射这个简单的模型。我尝试建模是提供商具有全局评级,并且全局评级实体的标识符与提供商实体的标识符相同(单向OneToOne),换句话说,我希望实体全局评级中的外键同时是主的和外部的,但是提供商实体也具有实体全局评级的外键。这可能吗?