Hallo,
ich benutze eine Version-Annotation vom Typ Timestamp, um festzustellen, wann sich ein Objekt einer Tabelle geändert hat. Das klappt auch soweit ganz gut, das Problem ist jedoch folgendes:
Wenn ich per Hibernate-Query nach Objekten frage, die nach einem bestimmten Timestamp geändert wurden, dann werden einige Ergebnisse wegen Rundungsfehlern nicht gefunden.
Die Objekt-Property sieht so aus:
Code:
@Version()
@Column(name ="version", nullable = false, length = 22)
public Timestamp getVersion() {
return version;
}
public void setVersion(Timestamp version) {
this.version = version;
}
und die Query:
Code:
"FROM DbUserProfile p WHERE p.version < :now"
, wobei now eingesetzt wird.
In der Datenbank wird die version-Property auf ein datetime(19) gemappt.
Wenn ich jetzt einen Timestamp der aktuellen Systemzeit nehme, unmittelbar danach zwei Objekte anlege und dann die Query ausführe, wird u.U. keins, eins oder zwei Objekte gefunden. In der DB haben beide Objekte die gleiche Version(Rundung).
Gibt es einen Weg, diese Rundung zu verhindern?
Hibernate version: 3.0
Name and version of the database you are using:MySql 4.1