使用Hibernate 的JPA 中的複合鍵
使用關聯式資料庫時,可能需要將組合鍵對應到物件的Java 類別-面向程式設計.在給定的程式碼中,時間表有一個由 levelStation 和 confPathID 組成的複合鍵。本文將指導您如何使用 JPA 和 Hibernate 以及 EmbeddedId 和 IdClass 註解來對應此複合鍵。
IdClass
IdClass 註解用於對應多個將各個欄位合併為單一複合主鍵 (PK)。要實作此方法,請建立定義複合 PK 結構的靜態內部類,並實現其 equals() 和 hashCode() 方法以進行正確的值比較。將此靜態類別中的對應欄位與實體中的欄位進行標識。
public class TimePK implements Serializable { protected Integer levelStation; protected Integer confPathID; // ... } @Entity @IdClass(TimePK.class) public class Time { @Id private Integer levelStation; @Id private Integer confPathID; // ... }
EmbeddedId
使用EmbeddedId註解,可以將複合PK封裝為可嵌入的實體內的類別。在可嵌入類別中,定義構成複合 PK 的欄位及其存取器。
@Embeddable public class TimePK { protected Integer levelStation; protected Integer confPathID; // ... } @Entity public class Time { @EmbeddedId private TimePK timePK; // ... }
差異
IdClass 和EmbeddedId 註解都可以用於映射組合鍵,但它們的服務略有不同目的:
查詢組合鍵
根據使用的註解,基於組合查詢時需要的語法略有不同鍵:
IdClass
select t.levelStation from Time t
EmbeddedI d
select t.timePK.levelStation from Time t
參考文獻
[JPA 1.0規格](https://docs.oracle.com/javaee/7/api/javax/persistence/package-summary.html)
以上是如何使用「EmbeddedId」和「IdClass」在 Hibernate 中對應 JPA 中的複合鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!