[英]Creating composite key for JPA/Hibernate vs artificial Long id
在jpa中僅具有兩列(都是主鍵的一部分)的實體中映射實體的更好方法是什么?
您所要求的聽起來像是多對多關系。 如果沒有其他選擇,只能為此創建一個實體,這就是您要做的。
首先 ,創建您的可嵌入復合密鑰
@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;
}
我將選擇選項3,將surrogate key
為Long 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.