MySQL 上的@GenerateValue 多態抽象超類
當使用Hibernate 和MySQL 在Spring MVC 應用程式中使用抽象類型和抽象類型@GenerateValue 時,它是必須考慮資料庫的特定要求和限制。當 GenerationType.TABLE 與 MySQL 一起使用時,經常出現「Table 'docbd.hibernate_sequences'不存在」的錯誤,MySQL 本身不支援序列。
問題概述
出現此問題的原因是 GenerationType.TABLE 需要一個名為「hibernate_sequences」的表格來儲存序列值。由於 MySQL 沒有該表,Hibernate 嘗試建立它,從而導致錯誤。此外,在抽象超類別中管理 ID 時,使用 GenerationType.IDENTITY 是不可行的。
解決方案
儘管 GenerationType.TABLE 和 GenerationType.IDENTITY 有限制,但有一個解決這兩個問題的解決方案。不依賴序列表或 AUTO_INCRMENT,而是在儲存實體之前手動檢索下一個 ID 並設定它來解決問題。此方法涉及以下步驟:
這種方法可以有效地產生新的 ID,而不需要依賴序列或自動遞增。它提供了更大的靈活性,並確保解決 MySQL 中不存在序列的問題。
以上是如何使用 Hibernate 和 MySQL 為 Spring MVC 應用程式中的抽象超類別產生 ID?的詳細內容。更多資訊請關注PHP中文網其他相關文章!