首页 > 数据库 > mysql教程 > 如何解决在 MySQL 的多态抽象超类上使用 @GenerateValue 时出现的'未知列 'sequence_name'”错误?

如何解决在 MySQL 的多态抽象超类上使用 @GenerateValue 时出现的'未知列 'sequence_name'”错误?

Barbara Streisand
发布: 2024-11-22 07:09:14
原创
1041 人浏览过

How to Resolve

MySQL 上的 @GenerateValue 多态抽象超类

在使用 Hibernate 和 MySQL 的 Spring MVC 应用程序中,在使用 @GenerateValue 时可能会遇到问题具有扩展它的子类的抽象超类。下面是对问题和解决方案的详细分析。

问题

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板