Задать вопрос
dshvechikov
@dshvechikov

Обрезается часть миллисекунд java.util.Date при сохранении в базу

Вообщем такая проблема: есть hibernate, mysql-база данных, есть некий класс с полем java.util.Date. Есть примерно вот такой тест:

assertEquals(objectService.findById(object.getId()), object);

Тест фейлится.
Методы hashCode и equals перегружены.

Начал разбираться почему и что не так. В итоге до сохранения в базу поле date возвращает 1357721424351 миллисекунд, а после того как объект вытаскиваем из базы, то это же поле выдает 1357721424000. Т.е. последние 3 цифры обрезаются

Собственно, может есть идеи кто виноват и что делать?
  • Вопрос задан
  • 4077 просмотров
Подписаться 2 Оценить 1 комментарий
Решения вопроса 1
ivnik
@ivnik
Вероятно виновата база данных. В стандарте SQL (http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt):

There are three classes of datetime data types defined within this
International Standard:

— DATE — contains the <datetime field>s YEAR, MONTH, and DAY;

— TIME — contains the <datetime field>s HOUR, MINUTE, and SECOND;
and

— TIMESTAMP — contains the <datetime field>s YEAR, MONTH, DAY,
HOUR, MINUTE, and SECOND.



Т.е. миллисекунды не хранятся.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Вы говорите что методы hashcode и equals перегружены — значит надо перегрузить их сильнее и сравнивать даты с точностью до секунд
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы