Java NamedQuery und Datum als parameter
Habe ich einfach @NamedQuery in Entity:
@NamedQueries({
@NamedQuery(name = ProductChangeLog.GetByDate, query = "From ProductChangeLog where date = :date ")
})
Datum ist ein Datum.sql
Und ich möchte diese Abfrage ausführen:
List<ProductChangeLog> productChangeLogs = session.getNamedQuery(ProductChangeLog.GetByDate)
.setString("date", date)
.list();
Mein problem ist, dass diese @NamedQuery produzieren Abfrage:
Hibernate: select productcha0_.id as id21_, productcha0_.availible as availible21_, productcha0_.category as category21_, productcha0_.date as date21_, productcha0_.description as descript5_21_, productcha0_.name as name21_, productcha0_.partnerId as partnerId21_, productcha0_.price as price21_, productcha0_.producent as producent21_, productcha0_.productId as productId21_, productcha0_.productUrl as productUrl21_, productcha0_.status as status21_ from ProductChangeLog productcha0_ where productcha0_.date=2014-01-20
... Und diese Abfrage ist falsch, cose Datum sollte in "", wie dieser: productcha0_.Datum="2014-01-20"
Was soll ich tun ?
Habe ich versucht,
.setDate("date", date)
.setParameter("date", date)
und Schweller nicht funktioniert.
- Könnte u post alle stack-trace? U miss
SELECT
key-word-in-Abfrage? - Es ist HQL, ich habe nicht auf hinzufügen, WÄHLEN Sie.
- Es gibt keine stack - trace- ich habe keine Ergebnisse für diese Abfrage.
- was ist der Datentyp von Datums-variable ?
- wenn ProductChangeLog Tabelle Datum eingereicht datetime ist, dann müssen Sie pass date-Objekt
- seine ein Datum-Feld, nicht datetime
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist das Datum Feld in Ihrer ProductChangeLog pojo kommentiert mit der richtigen Zeitlichen?
Hibernate Annotations
"In plain Java-APIs, die zeitliche Präzision der Zeitpunkt ist nicht definiert. Beim Umgang mit temporalen Daten, möchten Sie vielleicht, um zu beschreiben, die erwartete Präzision in der Datenbank. Zeitliche Daten können DATE -, TIME-oder TIMESTAMP-Genauigkeit (dh das tatsächliche Datum, nur die Uhrzeit oder beides). Verwenden Sie die @Temporal-annotation, um die Feinabstimmung es."
Wenn Sie
=
Betreiberparameter date
muss gleich sein dem Datum, Formular DB, exactlly. Ich denke, es ist wie ein Risiko mit=
Betreiber für den date-parameter inJPQL
oderhql
.Ich schlage
>
oder<
oderBETWEEN
Betreiber.Benötigen Sie kein Leerzeichen zwischen ":" und "=". So sollte es Lesen