CeccoCQ
CeccoCQ

Reputation: 3754

JPQL Date between interval

Where is my error?

SELECT m FROM Message m WHERE m.tabId = :idTab AND BETWEEN :startDate AND :endDate ORDER BY m.id DESC

I've this error:

Exception Description: Syntax error parsing the query ... , line 1, column 63: unexpected token [BETWEEN].
Internal Exception: NoViableAltException(11@[634:7: (n= NOT )?])

In my Java code I have:

// Exception line
Query query = em.createQuery(queryBuilder.toString());
////
query.setParameter("idTab", idTablet);
if (limit > 0) {
  query.setMaxResults(limit);
}
if (dateFrom != null) {
  query.setParameter("startDate", dateFrom, TemporalType.DATE);
   if (dateTo == null) {
     dateTo = new Date();
   }
   query.setParameter("endDate", dateTo, TemporalType.DATE);
}
messages = (List<MessageEntity>) query.getResultList();

Upvotes: 1

Views: 2981

Answers (1)

user1191247
user1191247

Reputation: 12973

You are not selecting any fields and you are missing the field for your date comparison. Try -

SELECT m.*
FROM Message m
WHERE m.tabId = :idTab
AND date_field BETWEEN :startDate AND :endDate
ORDER BY m.id DESC

Upvotes: 1

Related Questions