java将外键作为模型中的主键
我需要在hibernate应用程序模型中将外键列作为主键。当我设置@Id时,出现了一个错误。 这是我的模特
@Entity
@Table(name = "otp")
public class OTP {
@Id
private Origin origin;
private int code;
@Column(name = "created_at", nullable = true)
private Date created_at=new Date();
}
上面的实体模型无法添加id。因此,如何为外键列添加id。正如你们所见,我有一对一的关系。我需要这种关系成为主要的关键
# 1 楼答案
首先,你不能把一段关系作为主键。相反,当且仅当两个表之间的关系是一对一时,可以将外键作为主键
在你的情况下,由于这是一对一,我们可以走了
但不要用@Id注释Origin。用@Id注释外键,并在定义关系时使用@MapsId
请参阅下面的示例代码,其中人员和人员详细信息具有一对一的关系
个人详细信息实体看起来像:
个人实体看起来像:
# 2 楼答案
外键允许复制,这使得它们在大多数情况下不适合作为主键。然而,这不是一个规则
唯一的例外是具有一对一关系的表,其中链接表的外键和主键相同
我遇到了类似的情况,做了类似的事情
我找到了类似的例子here,希望这就是你要找的