2010-12-13 10 views
3

bitte helfen Sie mir mit JPQL Abfrage auf OpenJPA 1.2.x Hier ist der Text meiner Anfrage:JPA nativen Abfrage Generation mit COUNT (DISTINCT obj)

select count (distinct evt) from Event evt WHERE (evt.beginDate >= :startOfPeriod and evt.beginDate <= :endOfPeriod) ORDER BY evt.beginDate asc

Zur Laufzeit bekomme ich einen Fehler:

org.apache.openjpa.persistence.ArgumentException: DB2 SQL Error: SQLCODE=-119, SQLSTATE=42803 , SQLERRMC=BEGIN_DATE, DRIVER=3.59.81 {prepstmnt 1520523937 SELECT COUNT(DISTINCT t0.ID), t0.BEGIN_DATE FROM COMPANY.EVENT t0 WHERE (t0.BEGIN_DATE >= ? AND t0.BEGIN_DATE <= ?) optimize for 1 row [params=(Timestamp) 2010-12-14 00:00:00.0, (Timestamp) 2010-12-14 23:59:59.999]} [code=-119, state=42803]

Warum druckt JPA Feld t0.BEGIN_DATE in Select-Klausel? Warum hat JPA die ORDER BY-Klausel in nativem SQL übersehen? Zum Beispiel diese Abfrage (ohne t0.BEGIN_DATE in select-Klausel) gilt:

SELECT COUNT(DISTINCT t0.ID) 
    FROM CALENDAR.EVENT t0 
    WHERE (t0.BEGIN_DATE >= null AND t0.BEGIN_DATE <= null) 

Inull nur für den erfolgreichen SQL-Abfrage Ausführung festgelegt haben

Ist es eine irgendeine Art eines Fehlers ?

Antwort

3

Oh, man ... löschen Sie einfach "ORDER BY evt.beginDate asc". So dumm. Ich zähle, ich brauche keine Bestellung von ... Problem wurde von mir selbst gelöst. Entschuldigen Sie, dass ich gestört habe.