Как я могу отобразить дату из Java-объекта в базу данных с Hibernate? Я пробую разные подходы, но я не доволен ими. Зачем? Позвольте мне объяснить мою проблему. У меня есть следующий класс [1], включая основной метод, который я вызываю, и со следующим отображением [2]. Проблема с этим подходом вы можете увидеть, когда посмотрите на вывод консоли.
ложь
ложь
1
-1 * * +1010
1224754335648
1224754335000
Чт, 23 октября 11:32:15 CEST 2008
Часы @ 67064
Как вы можете видеть, даты to не совсем равны, хотя они и должны, поэтому трудно сравнивать их, не балуясь возвращаемым значением getTime
. Я также пробовал java.sql.Date, Timestamp и date вместо timestamp в отображении, но безуспешно.
Интересно, почему последние три цифры равны нулю и это спящий режим, проблема с Java или моя собственная глупость.
Спасибо за чтение.
[1]
public class Clock {
int id;
java.util.Date date;
public static void main(String[] args) {
HibernateUtil.init();
HibernateUtil.getSessionFactory().getCurrentSession().beginTransaction();
Clock clock = new Clock();
clock.date = new java.util.Date();
HibernateUtil.getSessionFactory().getCurrentSession().saveOrUpdate(clock);
HibernateUtil.getSessionFactory().getCurrentSession().getTransaction().commit();
HibernateUtil.getSessionFactory().getCurrentSession().beginTransaction();
Clock fromDBClock = (Clock)HibernateUtil.getSessionFactory()
.getCurrentSession().get(Clock.class, 1);
System.out.println(clock.date.equals(fromDBClock.date));
System.out.println(fromDBClock.date.equals(clock.date));
System.out.println(clock.date.compareTo(fromDBClock.date));
System.out.println(fromDBClock.date.compareTo(clock.date));
System.out.println(clock.date.getTime());
System.out.println(fromDBClock.date.getTime());
System.out.println(clock.date.toString());
System.out.println(fromDBClock.toString());
HibernateUtil.getSessionFactory().getCurrentSession().getTransaction().commit();
HibernateUtil.end();
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public java.util.Date getDate() {
return date;
}
public void setDate(java.util.Date date) {
this.date = date;
}
}
[2]
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Clock" table="CLOCK">
<id name="id" column="CLOCK_ID">
<generator class="native"/>
</id>
<property name="date" type="timestamp"/>
</class>
</hibernate-mapping>