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

Spring Boot+Hibernate Envers迁移后报REVINFO_SEQ序列不存在

解决Hibernate Envers升级后序列不存在的问题

问题根源

Hibernate Envers 5.x版本默认使用的修订序列名称是REV_SEQ,但升级到6.x后,默认序列名改为了REVINFO_SEQ。你的数据库里还是旧版本创建的REV_SEQ,所以新版本Envers执行操作时找不到REVINFO_SEQ,抛出ORA-02289错误。

可行解决方法

方法1:修改数据库序列(或创建同义词)

直接在Oracle数据库中执行以下操作之一:

  • 重命名旧序列适配新名称:
    ALTER SEQUENCE REV_SEQ RENAME TO REVINFO_SEQ;
    
  • 或者创建同义词(保留原序列名称的前提下兼容):
    CREATE SYNONYM REVINFO_SEQ FOR REV_SEQ;
    

方法2:配置Envers使用旧序列名

在Spring Boot配置文件(application.properties或application.yml)中添加Envers专属配置,强制使用原来的REV_SEQ序列:

  • 若用properties格式:
    spring.jpa.properties.org.hibernate.envers.revision_sequence_name=REV_SEQ
    
  • 若用yml格式:
    spring:
      jpa:
        properties:
          org:
            hibernate:
              envers:
                revision_sequence_name: REV_SEQ
    

额外检查

如果你自定义了修订实体(继承DefaultRevisionEntity或实现RevisionEntity),检查是否使用了@RevisionSequence注解,若有需确保注解中指定的序列名和数据库中存在的序列一致,比如:

@RevisionSequence(name = "REV_SEQ")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:12:07