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

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

Barbara Streisand
Barbara Streisand原創
2024-11-22 07:09:141074瀏覽

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