Hibernate and java.util.Date
От: SegaMegaDrive  
Дата: 25.03.06 22:05
Оценка:
Hi!

Есть Hibernate 3 и Oracle 10.
При персистинге объекта типа java.util.Date хибернейт переводит его в строковое представление в текущей тайм зоне и полученную строку использует в sql для записи даты в таблицу.
При чтении даты происходит обратный процесс. Хибернейт считает, что дата в базе есть в текущей тайм зоне.
Всё бы нормально, но вот в моём случае дату пишет сервер в одной тайм зоне, а читает её клиент в другой тайм зоне. При этом дата 10:00 GMT+3, записанная сервером, будет прочитана клиентом как 10:00 GMT-10, т.е. даты будут разными.

Встречался ли кто с такой проблемой? Подчеркну, что использовать мне необходимо класс. java.util.Date. Более того надо, чтобы дата писалась в базу в UTC.

Спасибо.
Re: Hibernate and java.util.Date
От: Gurney Великобритания www.kharlamov.biz
Дата: 27.03.06 09:47
Оценка:
Здравствуйте, SegaMegaDrive, Вы писали:

SMD>Встречался ли кто с такой проблемой? Подчеркну, что использовать мне необходимо класс. java.util.Date. Более того надо, чтобы дата писалась в базу в UTC.


Для хранения даты можно использовать long или java.util.Calendar.
Re: Hibernate and java.util.Date
От: C0s Россия  
Дата: 27.03.06 10:32
Оценка:
Здравствуйте, SegaMegaDrive, Вы писали:

SMD>Есть Hibernate 3 и Oracle 10.

SMD>При персистинге объекта типа java.util.Date хибернейт переводит его в строковое представление в текущей тайм зоне и полученную строку использует в sql для записи даты в таблицу.

несколько странно слышать, что производится конвертация в строковое представление и подстановка строки
возможно, это связано именно с использованием java.util.Date — не знаю, ибо не сталкивался

а поле в БД какого типа? почему именно строка подставляется как параметр?

SMD>Встречался ли кто с такой проблемой? Подчеркну, что использовать мне необходимо класс. java.util.Date. Более того надо, чтобы дата писалась в базу в UTC.


используй java.sql.Date — с одной стороны он является потомком java.util.Date, т.е. прочитанный объект даты в конвертации нуждаться не будет, а организовать конвертацию в него можно через дополнительно написанный setter, поддерживающий именно java.util.Date
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.