Mam prostą klasę jednostki, która ma właściwość Date. Ta właściwość odpowiada kolumnie datetime MySQL.Trwała data w bazie danych nie równa się pobranej daty
@Entity
public class Entity {
@Column(name = "start_date")
@Temporal(TemporalType.TIMESTAMP)
private java.util.Date startDate;
}
To właśnie test integracja pisałem wygląda następująco:
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);
spodziewałbym te dwie daty, aby być równe, ale nie są one! Właściwie mam:
now.getTime() = 1350160029831
entity.getStartDate().getTime() = 1350160029000
więc jest mała szczelina pomiędzy dwiema datami. Naprawdę zastanawiam się, skąd ta luka może pochodzić. Nie zawsze jest taka sama i zmienia się za każdym razem, gdy rozpoczynam testowanie. W mojej bazie danych zapisana data to 2012-10-13 22: 15: 38.0.
Czy naprawdę muszę wyczyścić gdzieś milisekundy?
Więc powinno Ged pozbyć części milisekund z czymś takim: Kalendarz kalendarza = Calendar.getInstance(); calendar.setTime (data); calendar.set (Calendar.MILLISECOND, 0); – Tunaki