2016-06-29 3 views
0

Я пытаюсь использовать ActiveJDBC для правильного преобразования integer[] из моей базы данных PostgreSQL в java equivalent int[]. Я получаю выборка правильно, но возвращаемый объект - weblogic.jdbc.wrapper.Array_org_postgresql_jdbc_PgArray. Мне еще предстоит найти способ его преобразования.ActiveJDBC: integer [] на PostgreSQL с несколькими схемами в одном DB

Я пытался 2 различные способы доступа к данным:

Сначала, используя стандартный формат record.findFirst("id = ?", id). Поскольку у меня есть несколько схем в моей базе данных, я добавил к моей модели нотацию @Table.

Во-вторых, я пробовал делать record.findBySQL("select array from record where id = ?", id). Я также пробовал array::integer[].

Каждый раз, когда я возвращаюсь к типу PgArray. Я искал способ конвертировать этот тип в нечто другое для использования, но ничего не сработало.

Есть ли способ сделать это? Нужно ли использовать другой способ поиска данных, кроме ActiveJDBC?

ответ

0

JDBC определяет java.sql.Array для обработки массивов типизированных столбцов. PgArray - это только реализация Postgres java.sql.Array.

Учитывая объект массива a вы можете позвонить (Integer[])a.getArray() получить Integer массив из массива объектов JDBC (если драйвер JDBC решил, что он будет возвращать вам Integer объекты, а не какой-то другой Numbers). Вспомогательный метод для извлечения значения и преобразования в int[], вероятно, будет хорошей идеей.

Не знаю, поддерживает ли activejdbc это преобразование за кулисами.

+0

Я не могу использовать метод getArray(). ActiveJDBC помещает все извлеченные элементы в мою модель, и я извлекаю их, используя: model.get («column»). Нет метода getArray(), связанного с этим. Я пробовал кастинг как для Integer [], так и для PgArray, но оба бросают ClassCastExceptions. –

+0

Я только нашел это решение на другом посту здесь. Он успешно работал. Благодаря! –

+0

, когда вы получаете массив, вызывая 'get (" column ")', какой тип Java вы возвращаетесь? – ipolevoy

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