我如何在 hibernate
中建模主键也是外键的表
作为这个架构:
CREATE TABLE policies (
policy_id int,
date_issued datetime,
-- // other common attributes ...
);
CREATE TABLE policy_motor (
policy_id int,
vehicle_reg_no varchar(20),
-- // other attributes specific to motor insurance ...
FOREIGN KEY (policy_id) REFERENCES policies (policy_id)
);
CREATE TABLE policy_property (
policy_id int,
property_address varchar(20),
-- // other attributes specific to property insurance ...
FOREIGN KEY (policy_id) REFERENCES policies (policy_id)
);
- 这在 hibernate 映射中是否可能,或者最好是分开 他们并使用新的 PK?
- 如果我在主表上使用自动递增也没关系
最佳答案
当然可以。这对于您可以拥有的一对一关联很有用:
@Id
@Column(name="policy_id")
private policyId;
@MapsId
@OneToOne
@JoinColumn(name = "policy_id")
private Policy policy;
您可以在主表上使用 AUTO-INCREMENT,这意味着您需要使用 IDENTITY JPA/Hibernate 中的生成器。
@MapsId允许您与实体标识符属性共享相同的 SQL 列。它指示 Hibernate 使用此列来解析 @OneToOne
或 @ManyToOne
关联。更改应始终通过 @Id 属性传播,而不是通过对一端(在插入/更新期间被忽略)传播。
关于java - 在 JPA/Hibernate 中使用 PK 作为 FK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28363843/