Hallo Leute!
Beim Entwickeln einer Applikation bin ich nun schon an mehreren Stellen über Probleme mit Daten und Zeiten gestolpert.
Beispielsweise habe ich in einer Entität zwei Uhrzeiten, die den Beginn und das Ende markieren sollen. Das Ziel ist es, alle Datensätze zu holen, bei denen die aktuelle Uhrzeit zwischen Beginn und Ende liegen:
Beginn <= aktuelle Zeit <= Ende
Wenn ich die Propertys mit java.sql.Time (Java) und Time (MySQL) realisiere, kann der Wert '00:00:00', sprich Mitternacht, nicht verwendet werden, weil beim Laden eines solchen Datensatzes immer eine Exception geworfen wird.
Nun habe ich es mal mit java.util.Date (Java) und Datetime (MySQL) probiert und den Getter etwas geändert, so dass er Time zurückliefert:
Code:
@Column(name = "ada_timestart", nullable = true)
private Date timeStart = null;
public Time getTimeStart() {
if (this.timeStart != null) {
return new Time(this.timeStart.getTime());
} else {
return null;
}
}
public void setTimeStart(Date timeStart) {
this.timeStart = timeStart;
}
Der Wert für Mitternacht kann nun als '1970-01-01 00:00:00' gespeichert werden. Jetzt stellt sich aber die Frage wie mein Criteria-Query geändert werden muss, um die richtigen Datensätze zu erhalten. Bisher habe ich das so gemacht:
Code:
Time time = new Time(new Date().getTime());
Opening opening = (Opening) session.createCriteria(Opening.class)
.add(Restrictions.le("start", time))
.add(Restrictions.ge("end", time))
.list().get(0);
Dies funktioniert aber leider nicht mehr, weil jetzt das Datum noch berücksichtigt wird.
Kennt jemand eine gute Seite, wo diese Probleme mit java.util.Date, java.sql.Date und java.sql.Time ausführlich erläutert und Best Practices gezeigt werden?
Vielen Dank im Voraus fürs Durchlesen und eure Zeit!