We need to make sure that only results from the last 30 days are returned for a JPQL query. The following is an example:
Date now = new Date(); Timestamp thirtyDaysAgo = new Timestamp(now.getTime() - 86400000*30); Query query = em.createQuery( "SELECT msg FROM Message msg "+ "WHERE msg.targetTime < CURRENT_TIMESTAMP AND msg.targetTime > {ts, '"+thirtyDaysAgo+"'}"); List result = query.getResultList();
Here is the error received:
<openjpa-1.2.3-SNAPSHOT-r422266: 907835 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: An error occurred while parsing the query filter 'SELECT msg FROM BroadcastMessage msg WHERE msg.targetTime <CURRENT_TIMESTget AND msg. > {ts, '2010-04-18 04:15: 37.827'} '. Error message: org.apache.openjpa.kernel.jpql.TokenMgrError: Lexical error at line 1, column 217. Encountered: "{" (123), after: "" Help!
jpa openjpa jpql
Lightbeard
source share