Actually to solve this problem, you would need a subquery in your orderBy-Part, which is not possible using criteria.
If you still want to stick with criteria, you could do something like that:
Code:
session.createCriteria(SomeClass.class).createAlias("events", "evt").addOrder(Order.desc("evt.property")).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list()
This is not a really efficient solution, since it makes a join and iterates the whole resultset to get the distinct someClass-objects. Maybe anybody knows a better solution using criteria?