首頁 >Java >java教程 >如何在 Hibernate JPA 中為非 ID 列產生資料庫序列?

如何在 Hibernate JPA 中為非 ID 列產生資料庫序列?

Linda Hamilton
Linda Hamilton原創
2024-11-30 07:03:19784瀏覽

How Can I Generate Database Sequences for Non-ID Columns in Hibernate JPA?

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn