在jpa中仅包含两列(都是主键的一部分)的实体中映射实体的更好方法是什么?
答案 0 :(得分:2)
您想要的听起来像是多对多关系。如果没有其他选择,只能为此创建一个实体。
首先,创建可嵌入的复合密钥
@Embeddable
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BaseKey {
private String a;
private String b;
}
第二,创建您的实体
@Entity
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AnyEntity {
@EmbeddedId
private BaseKey key;
}
答案 1 :(得分:-1)
我将选择选项3,将surrogate key
作为长ID。因为您希望避免在复合键的一部分发生更改的情况下更新多行。还要注意,甚至索引引用也必须更新。
例如-在下面的情况下,假设公司ID /雇员没有更改,那么在雇员和电话表的情况下,您将需要更新多行。
Employee Phone
--------- --------
Company ID (PK) Phone no
Employee No (PK) Company ID (FK)
Name Employee No (FK)
相反,如果您在Employee中添加代理密钥,则在Employee表中仅单个更新。
Employee Phone
--------- --------
ID (PK) Phone no
Company ID (UK) Employee ID (FK)
Employee No (UK)
Name