Чтобы получить значение oracle.sql.TIMESTAMPLTZ@70156e7b

Я работаю над базой данных Oracle 11g Enterprises Edition. Мы должны получить данные из таблиц базы данных. Таблицы базы данных имеют один из следующих типов столбцов:

  • TIMESTAMPLTZ
  • TIMESTAMPTZ

Все остальные типы данных и их значения успешно выбраны.

Мы используем apache meta-modal для анализа таблиц базы данных и создания CSV с его помощью.

Когда мы используем этот метод в строках:

row.getValues()[indexColumn]

НО этот код не извлекает значение столбца для данной строки, он возвращает объект oracle.sql.TIMESTAMPLTZ@70156e7b в виде строки. Нам нужна его ценность.

Приведение его к TIMESTAMPLTZ, исключение приведения. ИЛИ также columnValue.timestampValue() не имеет никакого смысла.

Как я могу получить значение для типа столбца TIMESTAMPLTZ с использованием метамодели Apache в отформатированном виде?

1 ответ

Итак, если вы видите что-то вроде "oracle.sql.TIMESTAMPLTZ@70156e7b", то в вашем выводе ваш код должен явно или неявно вызывать toString() на oracle.sql.TIMESTAMPLTZ объект.

Это не даст вам ничего читабельного, не говоря уже о полезном, потому что TIMESTAMPLTZ класс не переопределяет toString(), То, что вы видите, это то, что по умолчанию Object.toString() метод дает вам.

TIMESTAMPLTZ на самом деле конвертер / адаптер даты, который переносит дату в какой-либо форме. То, как вы используете TIMESTAMPLTZ экземпляр должен вызвать один из методов экземпляра. Например, позвонив dateValue(Connection) на TIMESTAMPLTZ Объект преобразует обернутую внутреннюю дату Oracle в объект Java Date. Другие методы экземпляра преобразуют в класс String, байтовый массив и классы даты / времени JDBC.

(В классе также есть несколько статических методов конвертации, но я не думаю, что это то, что вам нужно здесь.)

Другие вопросы по тегам