hsqldb.jdbc returns 中的 createArrayOf 字符串 AbstractMethodError

createArrayOf string in hsqldb.jdbc returns AbstractMethodError

我正在为使用 Oracle 数据库运行的 java 程序编写测试用例。我的代码是:

st = conn.prepareStatement( MY_QUERY, ResultSet.TYPE_SCROLL_INSENSITIVE,
                ResultSet.CONCUR_READ_ONLY);

            Array array  = conn.createArrayOf("VARCHAR", ids);
            st.setArray(1, array);
            rs = st.executeQuery();

查询所在

QUERY = "SELECT * from TABLE where id in ?"

我们正在使用 hsqldb 数据库进行测试。但是,运行 上面的测试代码给出了

java.lang.AbstractMethodError: org.hsqldb.jdbc.jdbcConnection.createArrayOf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/sql/Array;

createArrayOf 行。

我一直没能找到解决这个问题的方法。将不胜感激任何帮助。谢谢

在 class JDBCConnection(实现 java.sql.Connection)的 official HSQLDB JavaDoc(版本 2.x)中,createArrayOf 方法可用并记录在案:

createArrayOf

public Array createArrayOf(String typeName, Object[] elements) throws SQLException

从 HSQLDB 版本 2.x 开始支持此方法。因此,您应该更新您的应用程序以使用最新的 HSQLDB 驱动程序,它可以是 downloaded here

根据 changelist,作为开发团队“Connection#createArrayOf”方法的固定类型限制,您应该至少使用 2.2.1 版的 HSQLDB 驱动程序有了这个版本。

HSQLDB 中的 SQL 查询语法不同:

SELECT * from TABLE WHERE id IN(UNNEST(?))