首頁  >  文章  >  資料庫  >  如何使用 Hibernate 和 MySQL 在 Spring MVC 應用程式中產生抽象超類別的 ID?

如何使用 Hibernate 和 MySQL 在 Spring MVC 應用程式中產生抽象超類別的 ID?

Linda Hamilton
Linda Hamilton原創
2024-11-12 22:17:02813瀏覽

How to Generate IDs for Abstract Superclasses in a Spring MVC Application Using Hibernate and MySQL?

多態抽象超類和MySQL 身份產生

在使用Hibernate 和MySQL 的Spring MVC 應用程式中,管理抽象超類和MySQL 的ID 的挑戰他們的子類別出現了。 GenerationType.IDENTITY與抽象超類別不相容,且MySQL缺乏對序列的支援。如何解決這個問題?

首先,了解 MySQL 的限制很重要:它無法同時產生 ID 和插入記錄。然而,Hibernate 在實體插入期間期望具有此功能。

為了解決這個問題,可以實作「LAST_IDS」表。該表追蹤每個相關實體最後分配的 ID。以下步驟概述了使用此方法產生和保存ID 的過程:

  1. 啟動讀取樂觀事務
  2. 最大ID 查詢: SELECT MAX(entity_id) FROM LAST_IDS
  3. 變數儲存:將最大ID分配給變數($OldID)。
  4. 新ID計算: $NewID = $OldID 1(或更高的悲觀鎖定)。
  5. 樂觀更新: UPDATE LAST_IDS SETEntity_id= $NewID WHEREEntity_id= $OldID?
  6. 事務提交: 提交樂觀事務。
  7. 對實體賦值: 如果提交成功,則使用 setID() 將產生的 $NewID 設定為要儲存的實體。
  8. Hibernate 插入: Hibernate 執行插入操作。

透過利用這種方法,ID 產生和管理變得與抽象超類別和 MySQL 的限制相容。值得注意的是,Hibernate 實體中的繼承通常只應在支援資料庫中的繼承關係時使用,例如 PostgreSQL 或 Oracle。

以上是如何使用 Hibernate 和 MySQL 在 Spring MVC 應用程式中產生抽象超類別的 ID?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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