【问题标题】:Alter PostgreSQL sequence using Hibernate native sql query使用 Hibernate 本机 sql 查询更改 PostgreSQL 序列
【发布时间】:2013-10-22 11:56:51
【问题描述】:

我的问题似乎很简单,但我很难解决。
我想使用下一个代码通过本机 sql 查询使用 Hibernate 更改 PostgreSQL 序列(也欢迎其他解决方案):

    Query query = getSession()
        .createSQLQuery("ALTER SEQUENCE users_id_seq RESTART WITH ?")
        .setInteger(0, 1);
    query.executeUpdate();

但我收到此错误:

Hibernate: 
    ALTER SEQUENCE users_id_seq RESTART WITH ?
hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL Error: 0, SQLState: 42601
hibernate.engine.jdbc.spi.SqlExceptionHelper - ERROR: syntax error at or near "$1"

【问题讨论】:

    标签: java hibernate postgresql


    【解决方案1】:

    据我所知,您无法准备该声明。

    如果 hibernate 允许,模拟准备好的语句,而不是将其发送到服务器。如果没有,请清理变量并直接发出最终语句。

    或者,使用动态 SQL 将其包装在一个函数中:

    http://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN

    【讨论】:

    • 我知道这不是一个好习惯,但可能我会直接使用最终语句,当然是在清理输入参数之后。
    • Fwiw,改变一个序列也有点奇怪。 :-)
    • 实际上我执行了一些 DBUnit 测试,这就是我需要它的原因。
    猜你喜欢
    • 2011-06-03
    • 1970-01-01
    • 2017-04-14
    • 2019-05-22
    • 2016-02-27
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多