2010-12-12 10 views
2

i Schwierigkeiten haben, mit ausgewählten nur Monat oder Jahr in JPAWie nur Monat in JPA

in mysql auszuwählen schreiben i-Anweisung folgen:

select * from table where Month(date) = 12 ; 

und in EntityBean i schreiben folgen:

select t from table t where Month(t.date) = 12; 

aber es wirft Fehler !!

PS: Leider kann ich nicht meinen Stacktrace befestigen, weil ich nicht zu Hause bin: D

Antwort

1

leid, aber man kann das so weit mit JPA tun, wie ich weiß. hibernate's hql auf der anderen Seite kennt Sachen wie month() hour() und minute().

Überprüfung dieser Frage: JPA Date Arithmetic?

Hoffnung, die

+0

danken Ihnen für Ihre Unterstützung – MYE

0

nicht Teil der JPA geholfen und damit in die Rolle der Erweiterungen des Herstellers. Die meisten JPA-Implementierungen unterstützen es ... und Sie sagen nicht, welches Sie verwenden. DataNucleus unterstützt sicherlich Monat, Jahr, Tag, Stunde, Minute, Sekunde.

0

Dies könnte jemand helfen.

Einige JPA-Implementierungen verfügen über eine integrierte Unterstützung für Datums-/Uhrzeitfunktionen.

Eclipse

Eclipse unterstützt EXTRACT jede Datenbank unterstützt Datum/Uhrzeit Teilwert ab dem Datum/Zeit extrahiert werden ermöglicht. Die EXTRACT-Funktion ist datenbankunabhängig, erfordert jedoch Datenbankunterstützung. EXTRACT (YEAR, model.currencyExchangeDate), aber es erfordert Eclipse 2.4.x

FUNC für eine Datenbank-Funktion kann von JPQL nennen. Es ermöglicht den Aufruf von Datenbankfunktionen, die nicht direkt in JPQL unterstützt werden. Um die DB-Funktion MyFunc (a, b, c) aufzurufen, verwenden Sie FUNC ('MyFunc', a, b, c).

Sie können FUNC ('YEAR', currencyExchangeDate) versuchen, 'YEAR' Funktion aufzurufen.

Hibernate

In HQL können Sie Datumsfunktion YEAR (Datum), MONAT (Datum), Tag (Datum) zu extrahieren erforderlichen Details haben. Andere unterstützte Zeitfunktionen sind HOUR (Datum), MINUTE (Datum), SECOND (Datum).

Criteria API

CriteriaBuilder # function(): Erstellen Sie einen Ausdruck für die Ausführung einer Datenbankfunktion.

CriteriaQuery<IptExchangeratelines> cq = cb.createQuery(IptExchangeratelines.class); 
Root<IptExchangeratelines> exRateLine = cq.from(IptExchangeratelines.class); 
cq.where(cb.equal(cb.function("year", Integer.class, 

exRateLine.get(exRateLine_.currencyExchangeDate)), year) 
.and(cb.equal(cb.function("month", Integer.class, 
exRateLine.get(exRateLine_.currencyExchangeDate)), month))); 
Verwandte Themen