HSQLDB:用户缺少权限或对象未找到错误

时间:2017-10-18 20:14:47

标签: hibernate prepared-statement hsqldb

我正在查看一些旧代码,并且遇到运行其中一个单元测试的问题。

代码是:

String sql = "insert into customers" + 
            "(name, age, date, id) " +
            " values " + 
            " (?, ?, ?, CUSTOMERS_SEQ.NEXTVAL)";

        if (LOG.isDebugEnabled()) LOG.debug("doInsert: SQL query = " + sql);

        int count;
        PreparedStatement pStmt = null;
        try {
            // insert!
            pStmt = conn.prepareStatement(sql); // fails over here
            //... do other stuff
        }
        //...more things

但是,在尝试准备语句时会抛出错误

  

用户缺少未找到的权限或对象:CUSTOMERS_SEQ.NEXTVAL。

我正在阅读有关错误本身的内容,似乎无法找到任何内容。奇怪的是,当我在本地运行查询 Select CUSTOMERS_SEQ.NEXTVAL from CUSTOMERS它可以正常工作。

非常感谢任何和所有帮助。

1 个答案:

答案 0 :(得分:2)

表达式css不是SQL标准表达式,而是Oracle语法表达式。您需要通过以下语句启用Oracle语法兼容性:

CUSTOMERS_SEQ.NEXTVAL

或在连接网址上包含SET DATABASE SQL SYNTAX ORA TRUE

启用此兼容模式时,INSERT语句应该有效(它可以与HSQLDB 2.4.0一起使用)

等效的SQL标准表达式为:

sql.syntax_ora=true