Ho una semplice classe di entità che ha una proprietà Date. Questa proprietà corrisponde a una colonna datetime di MySQL.Data persistita nel database non uguale alla data recuperata
@Entity
public class Entity {
@Column(name = "start_date")
@Temporal(TemporalType.TIMESTAMP)
private java.util.Date startDate;
}
Questo è ciò che un test di integrazione ho scritto assomiglia:
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);
mi aspetterei quelle due date per essere uguali ma non lo sono! In realtà, ho:
now.getTime() = 1350160029831
entity.getStartDate().getTime() = 1350160029000
quindi c'è un piccolo spazio tra le due date. Mi sto davvero chiedendo da dove possa venire questo gap. Non è sempre lo stesso e varia ogni volta che avvio il processo di test. Nel mio database, la data memorizzata è 2012-10-13 22: 15: 38.0.
Ho davvero bisogno di cancellare millisecondi da qualche parte?
quindi dovrei Ged liberarsi della parte millisecondi con qualcosa del genere: Calendar calendar = Calendar.getInstance(); calendar.setTime (date); calendar.set (Calendar.MILLISECOND, 0); – Tunaki