You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hibernate 5自定义序列在MariaDB 11中报错:未知列next_val

问题解决:Hibernate 5序列查询报错Unknown column 'next_val'

问题描述

使用Hibernate 5保存generation type为sequence的新实体时,Hibernate执行查询:

select next_val as id_val from my_sequence_table for update

抛出SQL异常:

Caused by:
java.sql.SQLException: Unknown column 'next_val' in 'field list'

已确认数据库中my_sequence_table存在,异常触发于自定义的SequenceStyleGenerator实现的generate方法,代码如下:

@Override
public Serializable generate(final SharedSessionContractImplementor session, final Object object) throws HibernateException {
    TaxClaimReference claimReference = (TaxClaimReference) object;
    valuePrefix = claimReference.getRegisterReferencePrefix();
    return valuePrefix + String.format(numberFormat, super.generate(session, object));
}

问题原因

Hibernate的SequenceStyleGenerator默认序列表的列名为next_val,但你的my_sequence_table实际列名并非这个,导致查询时找不到对应列。

解决方案

1. 确认序列表实际列名

先查看数据库中my_sequence_table的结构,确认存储序列值的列名(比如seq_value、current_val等)。

2. 通过实体注解指定列名

在实体类的ID字段上,通过@GenericGenerator的parameters配置序列表的列名参数:

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "tax_claim_seq")
@GenericGenerator(
    name = "tax_claim_seq",
    strategy = "你的自定义SequenceStyleGenerator全类名",
    parameters = {
        @Parameter(name = "sequence_name", value = "my_sequence_table"),
        @Parameter(name = "column_name", value = "你的实际列名"), // 替换为真实列名
        @Parameter(name = "initial_value", value = "1"),
        @Parameter(name = "increment_size", value = "1")
    }
)
private String id;

3. 全局配置(可选)

如果多个实体都使用同一种序列表结构,可以在配置文件中全局设置列名:

  • 若使用application.properties:
hibernate.id.new_generator_mappings=true
hibernate.sequence_style_generator.column_name=你的实际列名
  • 若使用hibernate.cfg.xml:
<property name="hibernate.id.new_generator_mappings">true</property>
<property name="hibernate.sequence_style_generator.column_name">你的实际列名</property>

4. 验证自定义生成器逻辑

你的自定义generate方法仅做前缀拼接,未修改序列查询逻辑,所以只需确保上述配置正确即可,无需修改现有代码。

内容的提问来源于stack exchange,提问作者omarAhmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 17:03:21