gpt4 book ai didi

java - JPA : @PrimaryKeyJoinColumn or @JoinColumn + @Id

转载 作者:行者123 更新时间:2023-12-01 19:41:47 26 4
gpt4 key购买 nike

我有带有 @Entity 注释的用户类。

@Entity
public class User{

@Id
@GeneratedValue
private Long id;

private String firstName;
private String lastName;

}

我需要创建另一个包含用户详细信息的表。它必须链接到 User_id 并且没有自己的 id:user_id 电话号码 地址

所以,现在我用这个:

@Entity
@Table
@Data
public class UserDetails{

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(nullable = false)
private Long id;

@OneToOne (fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
private User user;

private String address;
private String phone;
}

但我有一个问题:为什么我用这个:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(nullable = false)
private Long id;

如果

@OneToOne (fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
private User user;

为我创建 user_id?

如果我删除 Id 字段,则会出现错误:没有为实体指定标识符:test.UserDetails,但是嘿! @PrimaryKeyJoinColumn 为此实体创建标识符。

也许我应该使用@Id + @JoinColumn 而不是@PrimaryKeyJoinColumn?

最佳答案

由于 @Entity 必须始终具有 @Id,因此您可以使用以下代码片段来映射这两个实体

@Id
@Column(name="user_id")
private Long id;

@OneToOne (fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn(name="user_id", referencedColumnName="user_id")
private User user;

关于java - JPA : @PrimaryKeyJoinColumn or @JoinColumn + @Id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55140498/

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