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

SpringBoot升级后如何全局配置Hibernate序列命名策略为legacy?

全局配置解决Hibernate 6.1.x中ID生成导致的表名加_SEQ后缀问题

问题背景

依赖升级后:

  • spring-boot-starter-parent 从2.7.1升级至3.0.0
  • mysql-connector-java 替换为 com.mysql:mysql-connector-j
  • 使用 hibernate-core-6.1.5 新表命名策略

测试失败原因:Hibernate 6.x 默认切换为SEQUENCE标识符生成策略,会自动给表名添加_SEQ后缀去查找序列表,但MySQL不支持序列,导致找不到对应表。当前已通过给每个实体类添加@GeneratedValue(strategy = GenerationType.IDENTITY)临时解决,希望通过application.yml全局配置统一处理。

全局配置方案

在application.yml中添加以下配置,将Hibernate全局默认的ID生成策略设置为IDENTITY(适配MySQL自增主键):

spring:
  jpa:
    properties:
      hibernate:
        id:
          generator:
            default_strategy: identity

补充说明

  • 该配置会覆盖Hibernate 6.x默认的SEQUENCE策略,所有实体类无需再单独标注@GeneratedValue(strategy = GenerationType.IDENTITY)即可使用MySQL自增主键。
  • 确保你的MySQL表主键字段已设置AUTO_INCREMENT属性,否则IDENTITY策略无法正常生效。
  • 若项目中存在需要使用其他ID生成策略的实体,仍可单独给该实体类添加@GeneratedValue指定策略,全局配置不会覆盖局部设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:07:01