#java #stored-procedures #jdbc #hsqldb
#java #хранимые процедуры #jdbc #hsqldb
Вопрос:
У меня есть следующая функция хранимой процедуры в HSQLDB 2.3.4 прямо из документации
CREATE FUNCTION an_hour_before (t TIMESTAMP)
RETURNS TIMESTAMP
RETURN t - 1 HOUR;
/;
Я пытаюсь вызвать функцию с
try (Connection connection = this.dataSource.getConnection()) {
try (CallableStatement call = connection.prepareCall("{ ? = call an_hour_before(?)}")) {
...
}
}
И я получаю NullPointerException
следующую трассировку стека
java.lang.NullPointerException
at org.hsqldb.StatementProcedure.getParametersMetaData(Unknown Source)
at org.hsqldb.result.Result.newPrepareResponse(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.<init>(Unknown Source)
at org.hsqldb.jdbc.JDBCCallableStatement.<init>(Unknown Source)
at org.hsqldb.jdbc.JDBCConnection.prepareCall(Unknown Source)
at com.acme.HsqlTest.test(HsqlTest.java:42)
...
Комментарии:
1.
this.dataSource.getConnection()
Возвращается лиnull
?2. @GordThompson нет
NullPointerException
, это происходит изнутри реализации HSQLDB#prepareCall
Ответ №1:
Это известная проблема с HSQLDB 2.3.4, и она была исправлена в репозитории SVN. Используйте более раннюю версию или скомпилируйте jar из /базового / магистрального кода.
Комментарии:
1. действительно, понижение версии до 2.3.3 устраняет проблему. Есть ли у вас ETA на 2.3.5?