JPQL ORDER BY clause with parameter

Viewed 31689

I'm trying to write a JPQL Query with an ORDER BY clause:

query = "SELECT c FROM item ORDER BY c.name ASC"

I would like to set an "order" parameter, whose value would be either "ASC" or "DESC":

query = "SELECT c FROM item ORDER BY c.name :order"

And then in my implementation:

query.setParameter("order", "ASC");

This is when I get an Hibernate error:

org.hibernate.HibernateException: Errors in named queries

Any idea on what I'm doing wrong? Thanks!

4 Answers

I suppose right way is using ORDER BY clause of Criteria API

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Country> q = cb.createQuery(Country.class);
Root<Country> c = q.from(Country.class);
q.select(c);
q.orderBy(cb.asc(c.get("currency")), cb.desc(c.get("population")));
Related