Search code examples
jpa-2.0eclipselinkcriteria-api

JPA 2 CriteriaQuery order by index


I have an Entity with a List<EntityRevision> contained in it. The collection has an @OrderColumn.

I'd like to get all the EntityRevisions for an Entity ordered by their index.

I can do this with the following query:

SELECT er 
  FROM Entity e JOIN e.revisions er 
  WHERE e.id = :entityId 
  ORDER BY index(er)

But I can't figure out how to do this with the CriteriaQuery.

Using EclipseLink 2.3.2 / JPA 2.0.3 - the Root<EntityRevision> has no index() method on it that I can use in the orderBy.

Any ideas?


Solution

  • I have not tested it, but something like criteriaQuery.orderBy(criteriaBuilder.asc( ((ListJoin)root.get("listMapping")).index())); should work if your listMapping is a list with an orderby column.