Frage

habe ich ein Problem, dass die Syntax für datediff in mysql unterscheidet sich von dem in hsqldb:

mysql: datediff(date1,date2)
hsqldb: datediff(interval,date1,date2)

Die Dialekte in Hibernate in der Regel diese Probleme beheben, jedoch scheine ich nicht in der Lage zu sein, einen Weg zu finden, eine datediff Beschränkung für Hibernate zu schaffen. Das ist ein echtes Ärgernis, weil es mich von Unit-Tests mit einer In-Memory-Datenbank hsql verhindert, da ich zu ‚hard‘ das Format der datediff in einer SQL-Anweisung habe.

Wenn jemand Rat in dieser Angelegenheit hat, würde es sehr zu schätzen.

War es hilfreich?

Lösung

Ich würde sagen, dass die einfachste Lösung ist, Ihren eigenen HSQLDB Dialekt zu erstellen, den vorhandenen HSQLDB Dialekt erstreckt. Dann wird im Konstruktor, registriert eine Funktion datediff (date1, date2) zu handhaben übersetzt wird in DATEDIFF (Intervall, date1, date2), sofern Intervall ein statischer Wert sein würde. So etwas wie folgt aus:

registerFunction( "datediff", new SQLFunctionTemplate( StandardBasicTypes.INTEGER, "datediff(interval, ?1, ?2)" ) );
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top