Обрезается часть миллисекунд java.util.Date при сохранении в базу
Вероятно виновата база данных. В стандарте 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.



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