1
假设你有一个表,如下所示:映射按键在JPA:主键是一个外键
CREATE TABLE IF NOT EXISTS CREDENTIAL (
USER_NAME VARCHAR(20) NOT NULL,
HASHED_PASSWORD VARCHAR(128) NOT NULL,
CREATION_DATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
LAST_UPDATE_DATE TIMESTAMP,
LAST_UPDATED_BY VARCHAR(20),
PRIMARY KEY (USER_NAME),
FOREIGN KEY (USER_NAME) REFERENCES USER(USER_NAME),
FOREIGN KEY (LAST_UPDATED_BY) REFERENCES USER(USER_NAME)
) CHARACTER SET utf8;
人们可以看到,USER_NAME
列是主键表,以及一个外键。是的,MySQL成功生成了这张表。
问题很简单,我如何将这个映射到JPA实体?我是否应该有一个映射到USER_NAME
列的ID和另一个加入USER_NAME
列的字段User user
?欢迎提出建议。
为什么使用'@ ManyToOne'?一个用户拥有一个凭证,因此为什么'USER_NAME'是主键。 –
ManyToOne更容易处理。事实上,你可以与OneToOne一起生活,但我发现OneToOne更难以管理。另外如果应用程序有几种认证用户的方式呢? – WeMakeSoftware
它有,但其他认证方案是通过各自的第三方认证完成的,所以不需要将其映射到'@ ManyToOne'方案。 –