在Hibernate JPA 中使用非ID 欄位的資料庫序列
使用Hibernate 作為JPA 提供程式時,您可能會遇到以下需求為不屬於識別符的列生成值。不幸的是,通常用於自動遞增主鍵的 @GenerateValue 註解在這種情況下不適用。
首先,了解 Hibernate/JPA 不會自動產生非 ID 屬性的值非常重要。 @GenerateValue 註解僅用於管理主鍵產生。相反,需要資料庫產生的值。
要克服此限制,請考慮使用產生的識別碼建立一個單獨的實體,稱為「代理鍵實體」。然後,可以使用 OneToOne 關係將相關非 ID 列與此代理實體關聯起來。
範例實作:
// Surrogate Key Entity @Entity public class SurrogateEntity { @Id @GeneratedValue(...) private Long number; } // Main Entity @Entity public class MyEntity { @Id private Long id; @OneToOne(...) private SurrogateEntity myVal; }
透過此方法,值myVal 屬性將在建立新的 MyEntity 實例時由資料庫產生。此解決方法可讓您利用 Hibernate 的資料庫產生的值來處理非 ID 列的功能。
以上是如何在 Hibernate JPA 中為非 ID 列產生資料庫序列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!