gpt4 book ai didi

java - JPA @MapsId 与 @JoinColumn(可更新=假,可插入=假)

转载 作者:行者123 更新时间:2023-12-02 07:30:50 83 4
gpt4 key购买 nike

在我看来,以下两种映射方式实际上没有区别。以下是基于 @MapsId javadoc 的示例:

// parent entity has simple primary key

@Entity
public class Employee {
@Id long empId;
...
}

// dependent entity uses EmbeddedId for composite key

@Embeddable
public class DependentId {
String name;
long empid; // corresponds to primary key type of Employee
}

@Entity
public class Dependent {
@EmbeddedId DependentId id;
...
@MapsId("empid") // maps the empid attribute of embedded id
@ManyToOne Employee emp;
}

如果我将 Dependent 的映射更改为:

@Entity
public class Dependent {
@EmbeddedId DependentId id;

@ManyToOne
@JoinColumn("empid", insertable=false, updatable=false)
Employee emp;
}

以上两种方法有什么区别?

最佳答案

因此,我测试了 @MapsId 的用法,当表中只有一个外键时,这没有什么不同。但是对于一张表有两个外键的表,例如......UserTableEmailTable-> @MapsId(owner)UserTable 所有者@MapsId(receiver) UserTable 接收者 i有问题。 Hibernate 抛出异常。所以我必须回到旧的@JoinColumn 这样做的方式。这是我在使用这些注释时遇到的一个差异。

关于java - JPA @MapsId 与 @JoinColumn(可更新=假,可插入=假),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20558581/

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