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

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

Linda Hamilton
發布: 2024-11-12 22:17:02
原創
915 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板