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!
If you want to use named queries here, you'd need two of them (named queries are static and you can't use ASC and DESC as parameter as pointed out by @Mark).
I suppose right way is using ORDER BY clause of Criteria API
The "ASC" or "DESC" can't be a query parameter. You could use string concatenation instead.
You should validate that the contents of
sortOrder
can only be ASC or DESC and does not come directly from the user.Instead of writing twice a named Query containing an 'order by' clause, you can implement your DAO this way :