Ich habe eine einfache Entitätsklasse mit einer Date-Eigenschaft. Diese Eigenschaft entspricht einer MySQL-Datetime-Spalte. Dauerhaftes Datum in der Datenbank ungleich dem abgerufenen Datum
@Entity
public class Entity {
@Column(name = "start_date")
@Temporal(TemporalType.TIMESTAMP)
private java.util.Date startDate;
}
Dies ist, was ein Integrationstest I sieht aus wie schrieb:
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);
würde ich diese beiden Daten erwarten gleich zu sein, aber sie sind es nicht! Eigentlich habe ich:
now.getTime() = 1350160029831
entity.getStartDate().getTime() = 1350160029000
so gibt es eine kleine Lücke zwischen den beiden Daten. Ich frage mich wirklich, wo diese Lücke herkommen könnte. Es ist nicht immer das Gleiche und variiert jedes Mal, wenn ich den Testprozess starte. In meiner Datenbank ist das gespeicherte Datum 2012-10-13 22: 15: 38.0.
Muss ich wirklich irgendwo Millisekunden löschen?
Also sollte ich der Millisekunden Teil Ged befreien mit etwas wie diesem: Kalender Kalender = Calendar.getInstance(); calendar.setTime (Datum); calendar.set (Kalender.MILLISECOND, 0); – Tunaki