问题描述
我有下表,
: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
- 表明联系人的id(主键)也是User的外键的正确方法是吗?
- 我是否需要使用
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id;
或@PrimaryKeyJoinColumn
?
根据上面的代码,我的存储库界面应该如何?
@JoinColumn
或
public interface ContactRepository extends JpaRepository<Contact,User> {}
那么有人可以帮助我解决这个问题吗?预先感谢。
解决方法
- 请勿将外键用作主键
- JoinColumn
- 合同具有整数ID,因此
<Contact,Integer>