Я использую критерии гибернации для сортировки родительских строк на основе свойства даты дочерних коллекций
public class Parent
{
private int id;
private string code;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "parent")
private Set<Child> childs = new HashSet<>(0);
}
public class Child
{
private int id;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "START_DATE", length = 19)
private Date startDate;
@ManyToOne
@JoinColumn(name = "parent_Id")
private Parent parent;
}
Session session = sessionFactory.getCurrentSession();
Criteria cr = session.createCriteria(Parent.class);
cr.createAlias("parent.childs", "childs");
cr.addOrder(Order.desc("childs.startDate"));
cr.setFirstResult(0);
cr.setMaxResults(20);
cr.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
(List<Parent>)cr.list();
Хотя существует 20 родительских записей, список возвращает 13 записей