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

Hibernate 6迁移:序列ID生成默认增量设置及代码适配

Hibernate 6 迁移方案:实体独立序列+增量100配置

核心变化说明

Hibernate 6 默认已采用「每个实体对应独立序列」的策略,且默认使用enhanced-sequence生成器,因此你原来配置的CONFIG_PREFER_SEQUENCE_PER_ENTITY=true可以直接移除。增量大小的配置可通过以下几种方式实现:


方式一:使用JPA标准注解简化代码(推荐)

直接用JPA原生的@SequenceGenerator配置增量大小,Hibernate 6会自动为每个子类生成独立序列(默认序列名为实体类名_SEQ):

@Getter
@Setter
@MappedSuperclass
@Audited
public abstract class AbstractEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "entity-sequence")
    @SequenceGenerator(
        name = "entity-sequence",
        allocationSize = 100 // 对应原配置的增量大小100
        // sequenceName属性可省略,Hibernate6默认会生成「实体类名_SEQ」格式的序列名
    )
    private Long id;
}

方式二:保留Hibernate特定注解简化配置

如果仍想使用Hibernate的enhanced-sequence策略,只需移除已默认生效的参数,仅保留增量配置即可:

@Getter
@Setter
@MappedSuperclass
@Audited
public abstract class AbstractEntity {

    @Id
    @GeneratedValue(generator = "optimized-sequence")
    @GenericGenerator(
        name = "optimized-sequence",
        strategy = "enhanced-sequence",
        parameters = {
            @Parameter(name = SequenceStyleGenerator.INCREMENT_PARAM, value = "100")
        }
    )
    private Long id;
}

方式三:全局统一配置(适合多实体场景)

如果希望所有实体都采用增量100的独立序列,可以在配置文件中全局设置,无需在代码中逐个配置:

Spring Boot 示例(application.properties):

# 启用Hibernate新生成器映射(Hibernate6默认已开启)
spring.jpa.hibernate.id.new_generator_mappings=true
# 全局设置序列增量大小为100
spring.jpa.properties.hibernate.id.sequence.increment_size=100

此时基类代码可简化为:

@Getter
@Setter
@MappedSuperclass
@Audited
public abstract class AbstractEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Long id;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 12:10:19