JPA Criteria does not allow order by in a subquery because it makes no sense with the features JPA Criteria offers. Ordering in subqueries only matters if you can use limit/offset and Hibernate ORM does add support for that.
For every JPA Criteria interface, Hibernate ORM has an extension interface e.g. JpaSubQuery for Subquery, JpaExpression for Expression etc. These extension interfaces provide Hibernate ORM supported features on top of the JPA Criteria contracts.
Use HibernateCriteriaBuilder which is the extension of the CriteriaBuilder interface, where every method is covariantly overridden to return the extension type.