Строка createArrayOf в hsqldb.jdbc возвращает AbstractMethodError

Я пишу тестовые примеры для своей Java-программы, которая работает с базой данных Oracle. Мой код:

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.

Мне не удалось найти решение этой проблемы. Был бы признателен за любую предоставленную помощь. Спасибо


person sudshekhar    schedule 11.03.2016    source источник
comment
Какую версию HSQLDB вы используете? Метод _ 1_ был добавлен в Java 1.6 (или JDBC 4), поэтому похоже, что ваша версия HSQLDB не поддерживает JDBC 4.   -  person Mark Rotteveel    schedule 11.03.2016
comment
Моя версия 1.8.0.9. Я использую это, поскольку наша версия Spring - 3.1.1, и тогда использовалась именно эта версия HSQLDB. Стоит ли обновиться и посмотреть?   -  person sudshekhar    schedule 11.03.2016
comment
Насколько мне известно, HSQLDB 1.8.x поддерживает только (частично) JDBC 3. Последней версией является 2.3.3, но я не знаю уровень поддержки JDBC 4 в ней.   -  person Mark Rotteveel    schedule 11.03.2016


Ответы (2)


В официальный HSQLDB JavaDoc (версия 2.x) класса JDBCConnection (который реализует java.sql.Connection) метод createArrayOf доступен и задокументирован:

createArrayOf

public Array createArrayOf (String typeName, Object [] elements) выбрасывает SQLException

Этот метод поддерживается, начиная с HSQLDB версии 2.x. Поэтому вам следует обновить свое приложение, чтобы использовать последний драйвер HSQLDB, который может быть скачано здесь.

Согласно списку изменений, вы должны использовать как минимум версию 2.2.1 драйвера HSQLDB в качестве команды разработчиков. "фиксированные ограничения типа для метода Connection # createArrayOf" в этом выпуске.

person MWiesner    schedule 12.03.2016

Синтаксис SQL-запроса в HSQLDB отличается:

SELECT * from TABLE WHERE id IN(UNNEST(?))
person fredt    schedule 12.03.2016