2013-04-18 2 views
2

У меня есть Java-программа, использующая JDBI (обертка JDBC) для доступа к базе данных PostgreSQL. Один из столбцов имеет тип данных массива (mycolumn integer[]).Использование JDBI для получения данных Array Postgres

Что, черт возьми, я использую в своем классе картографа? Я думал, что resultSet.getArray("mycolumn") будет правильным решением, но я не уверен, как получить данные из возвращаемого объекта java.sql.Array.

Любые подсказки или хорошие ссылки о том, как это сделать?

+1

Подсказка: http://docs.oracle.com/javase/6/docs/api/java/sql/Array.html, 'Array.getArray()'. –

+0

Он возвращает объект, хотя ... Я не знаю, какой тип его бросил, и документы не стали для меня более ясными. – Amasuriel

+0

Тип базового массива определяется типом поля базы данных. Вы можете получить информацию из API метаданных JDBC. Альтернативно, 'getClass()' на объекте и проверить его таким образом. –

ответ

1
 Array array = resultSet.getArray("mycolumn"); 
     return nonNull(array) ? (Integer[])array.getArray() : null ; 
+0

Как я могу зарегистрировать этот фрагмент кода, поэтому '@ MapResultAsBean' может его использовать? – Jorn

+0

Мы не можем использовать @MapResultAsBean для этой проблемы. Нам нужно написать mapper – Manikandan

+0

Что я хочу сказать, я хочу, чтобы Bean с полем «List » (или даже 'int []', если 'List' невозможен), и обработчик bean заполнил это поле из' ResultSet '. Я на самом деле сделал это, взяв существующий mapper и добавив тип к существующему коду, но было бы здорово, если бы существующий mapper был расширяемым. – Jorn

Смежные вопросы