具有主键但又是外键的JpaRepository正确的数据类型是什么?

问题描述

我有下表,

:timer.cancel(ref)

所以我在User int id PK Contact int id PK,FK to User.id 中的代码如下,

Contact.java

在我的@Getter(value = AccessLevel.NONE) @Setter(value = AccessLevel.NONE) @Id @Column(name = "id",insertable = false,updatable = false) private Integer id; @OnetoOne(fetch = FetchType.LAZY) @MapsId @JoinColumn(name = "id",nullable = false) private User userId; 中,

User.java

所以根据上面的代码我有一些疑问。

  1. 表明联系人的id(主键)也是User的外键的正确方法是吗?
  2. 我是否需要使用@Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @PrimaryKeyJoinColumn

根据上面的代码,我的存储库界面应该如何?

@JoinColumn

public interface ContactRepository extends JpaRepository<Contact,User> {}

那么有人可以帮助我解决这个问题吗?预先感谢。

解决方法

  1. 请勿将外键用作主键
  2. JoinColumn
  3. 合同具有整数ID,因此<Contact,Integer>