【问题标题】:Not able to execute ALTER SEQUENCE command through spring boot code无法通过 Spring Boot 代码执行 ALTER SEQUENCE 命令
【发布时间】:2021-05-05 13:33:16
【问题描述】:

我正在使用 java 8 和 oracle 11g 在 spring boot 1.5.22 中编写代码。在这里,在我的存储库类中,我尝试将一个本机查询称为-

@Query(value = "ALTER SEQUENCE <SEQ_NAME> RESTART START WITH 0", nativeQuery = true)
void resetSequence();

当我尝试在我的服务 Impl 类中调用此方法时,我收到以下错误:-

java.lang.NegativeArraySizeException:-1

但是,我可以使用 java 代码执行选择序列命令-

    @Query(value = "select <Seq_name>.nextVal from dual", nativeQuery = true)
    int getNextCount();  

我不知道我如何准确地命令在这里使用 java 代码/作业重置我的序列。

【问题讨论】:

    标签: spring oracle spring-boot java-8 spring-data


    【解决方案1】:

    尝试添加@Modifying注解

    【讨论】:

      【解决方案2】:

      嗯,ALTER SEQUENCE不是查询,所以它不会像你所说的那样工作。

      工作的是回退到普通的 JDBC 并调用类似的东西

      con.createStatement().execute "ALTER SEQUENCE  SEQ RESTART START WITH 0"
      

      两个补充说明

      • ALTER SEQUENCE 不是 spring-data 的典型用例,因此它只能用于 JUnit 等的一些支持代码中。

      • 您必须使用 MINVALUE 0 创建序列才能重置它(默认为 1)。否则你会得到异常ORA-04006: START WITH cannot be less than MINVALUE

      【讨论】:

        猜你喜欢
        • 2011-10-24
        • 2020-02-26
        • 2021-06-03
        • 2020-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多