首頁 > 資料庫 > mysql教程 > 如何解決在 MySQL 的多態抽象超類別上使用 @GenerateValue 時出現的「未知列 'sequence_name'」錯誤?

如何解決在 MySQL 的多態抽象超類別上使用 @GenerateValue 時出現的「未知列 'sequence_name'」錯誤?

Barbara Streisand
發布: 2024-11-22 07:09:14
原創
1076 人瀏覽過

How to Resolve

MySQL 上的@GenerateValue 多態抽象超類

在使用Hibernate 和MySQL 的Spring MVC 應用程式中,在使用Hibernate 和MySQL 的Spring MVC 應用程式中,在使用@Generate時可能會遇到問題具有擴展它的子類別的抽象超類別。以下是對問題和解決方案的詳細分析。

問題

在 MySQL 中儲存抽象超類別 BaseEntity 的子類別時,您可能會收到有關非下列內容的錯誤: hibernate_sequences 表是否存在。發生這種情況是因為 MySQL 不支援序列,而 GenerationType.TABLE(@GenerateValue 的預設值)需要使用序列。

解決方案

克服這個問題問題,您需要在MySQL 中建立一個名為hibernate_sequences 的表,正如JBNizet 在原始問題的第二次編輯中所建議的那樣。但是,即使在建立表格之後,您也可能會遇到另一個錯誤:「'where 子句'中的未知列'sequence_name'」。

要解決此問題,請修改Hibernate 產生的SELECT 語句以正確指定sequence_name:

Hibernate: select sequence_next_hi_value from hibernate_sequences where sequence_name = 'BaseEntity' for update
登入後複製

將語句變更為:

Hibernate: select sequence_next_hi_value from hibernate_sequences where sequence_names = 'BASE_ENTITY' for update
登入後複製

確保序列名稱為在SELECT 語句中大寫,它應該與您在建立表格(create table ...語句)期間指定的序列名稱符合。

一旦序列名稱正確,Hibernate SQL 應該無縫工作,允許您保存BaseEntity 的子類,不會遇到「未知列 'sequence_name'」錯誤。

以上是如何解決在 MySQL 的多態抽象超類別上使用 @GenerateValue 時出現的「未知列 'sequence_name'」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板