Хранение даты и времени в базе данных - PullRequest
4 голосов
/ 11 апреля 2011

Мое приложение уже использует Joda-time для манипулирования датами с планами обновления до jsr 310 в ближайшем будущем.

Теперь мне нужно хранить ОЧЕНЬ точную метку времени в базе данных, используя jpa 2 и hibernate, но java.util.Date не хранит значение в миллисекундах.

Я нашел UserType и настроил свой объект управления таким образом

    @Column( name = "TRANSACTION_TIME" )
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
private DateTime transactionTime;

но он по-прежнему не хранит миллисекунды.

Я передал это 2010-11-02 12:02:54.945, но когда я его нашел, это было 2010-11-02 12:02:54.000.

Что еще мне нужно сделать, чтобы сохранить миллисекунды и, возможно, часовой пояс?

UPDATE Я только что проверил, и миллисекунды фактически попадают в базу данных, но Hibernate не включает ее в возвращаемые результаты. Один и тот же форматер напечатал два результата, поэтому проблема с форматированием не возникает

Ответы [ 2 ]

5 голосов
/ 11 апреля 2011

Это может быть не совсем то, что вам нужно, но вы можете сохранить время в виде числа (= миллисекунд с начала эпохи) вместо поля даты и времени.

3 голосов
/ 17 апреля 2011

Тип данных Oracle DATE не сохраняет доли секунды. Вам нужно использовать TIMESTAMP или числовой столбец, как было предложено ранее. Смотри: http://knol.google.com/k/oracle-date-and-time-data-types

...