Date プロパティを持つ単純なエンティティ クラスがあります。このプロパティは、MySQL の datetime 列に対応します。
@Entity
public class Entity {
@Column(name = "start_date")
@Temporal(TemporalType.TIMESTAMP)
private java.util.Date startDate;
}
これは、私が書いた統合テストのようなものです:
java.util.Date now = new java.util.Date();
Entity entity = new Entity();
entity.setStartDate(now);
entityService.save(entity); // save entity to database
entity = entityService.get(entity.getId()); // get entity back from database
Assert.assertEquals(entity.getStartDate(), now);
これらの 2 つの日付が同じであることを期待しますが、そうではありません。実際、私は持っています:
now.getTime() = 1350160029831
entity.getStartDate().getTime() = 1350160029000
そのため、2 つの日付の間にはわずかなギャップがあります。このギャップがどこから来るのか、私は本当に疑問に思っています。常に同じとは限らず、テスト プロセスを開始するたびに異なります。私のデータベースでは、保存されている日付は 2012-10-13 22:15:38.0 です。
本当にどこかでミリ秒をクリアする必要がありますか?