спящий JDBC тип не найден - PullRequest
0 голосов
/ 07 марта 2011

Есть ли в Hibernate какое-либо отображение для этого типа данных Oracle: (10G) TIMESTAMP (6) С ВРЕМЕННОЙ ЗОНОЙ

Я получаю: Нет сопоставления диалектов для типа JDBC: -101

MyМенеджер не хочет делать: registerHibernateType(-101, Hibernate.getText().getname())

Он думает, что это слишком много. :) Какая у меня альтернатива?

Ответы [ 2 ]

0 голосов
/ 08 марта 2011

Ответ, который вы даете себе, больше похож на обходной путь, чем на правильное решение. Ради посетителей, ищущих ответ, я выскажу свое мнение по этому поводу:

1) Поля базы данных, основанные на дате, всегда должны быть установлены в формате UTC, а не в конкретном часовом поясе. Расчет даты с информацией о часовом поясе является ненужной сложностью. Помните, что часовые пояса обычно меняются два раза в год для многих стран мира («летнее время»). Есть причина, по которой это поддерживают только несколько RDMBS, и причина, по которой разработчики Hibernate отказываются поддерживать этот тип данных. Патч для Hibernate достаточно прост (одна строка кода), последствия не таковы.

2) Преобразование вашей «метки времени с часовым поясом» в строку вызовет проблемы только позже. После того, как вы извлечете его как String, вам нужно будет снова преобразовать его в объект Date / Calendar, ненужные накладные расходы. Не говоря уже о рисках, связанных с этой операцией.

3) Если вам нужно узнать, в каком часовом поясе находится какой-либо пользователь, просто сохраните строку, представляющую смещение часового пояса (например, «Европа / Прага»). Вы можете использовать это в Java для создания Календаря с датой / временем и часовым поясом, так как он позаботится о летнем времени для вас.

0 голосов
/ 07 марта 2011

Пока я решил проблему следующим образом:

`select TO_CHAR(TRUNC(field)) from table` //field is the one having type= timestamp with timezone

Это гарантирует, что при возврате запроса поле будет иметь тип данных "String"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...