Ich bin sicher, dass jemand, der mit HQL vertraut ist (ich bin selbst ein Neuling), diese Frage leicht beantworten kann.
In meiner Grails-Anwendung habe ich die folgende Domänenklasse.
%Vor% In meiner HQL-Abfrage möchte ich Bücher abrufen, deren Veröffentlichungsdatum im Bereich date1
.. date2
Zum Beispiel habe ich versucht:
%Vor% Aber ich habe die Ausnahme ...caused by: org.springframework.orm.hibernate3.HibernateQueryException: unexpected token:
Das Fehler-Token zeigt auf das Datumsformat (z. B. 2009-11-27T21:57:18.010+01:00
oder Fri Nov 27 22:01:20 CET 2009
)
Ich habe auch versucht, Datum1 in eine Date-Klasse ohne Erfolg zu konvertieren
Was ist der korrekte HQL-Code? Sollte ich mit der patternForStyle-Methode in ein bestimmtes Format konvertieren (welches?) Oder gibt es einen anderen Weg, dies zu tun?
Danke,
Fabien.
Ich bin kein Grails-Experte, aber in Java würden Sie normalerweise die Abfrageparameter date1
und date2
erstellen und sie wie folgt binden:
Ich bin mir sicher, dass du etwas Ähnliches in Grails machen kannst. Wenn nicht, formatiere deine Daten als yyyyMMddhhmmss
(keine Leerzeichen) und setze sie in einfache Anführungszeichen - so behandelt Hibernate sie als Konstanten und MySQL konvertiert sie implizit in Daten.
Ich habe von ChssPly darauf hingewiesen, dass Sie date1
und date2
als Abfrageparameter (positional oder named) deklarieren und sie dann binden sollten. Hier werden wir benannte Parameter verwenden. Die übliche Methode zum Übergeben benannter Abfrageparameter mit Grails ist über ein Map
:
Überprüfen Sie die executeQuery()
-Dokumentation für die Syntaxdetails von beiden Optionen.