Вы можете посмотреть на Проекции .Вы должны иметь возможность использовать Projection.groupProperty () для ассоциации типа и суммировать результаты.проверьте этот вопрос: Выражения в критериях гибернации
edit: пробовал, и, кажется, следующее работает нормально:
Order:
@Entity
@Table(name="orders")
public class Order {
@Id
@GeneratedValue
private long id;
@ManyToOne
private Type type;
}
Тип:
@Entity
@Table(name="order_types")
public class Type {
@Id
@GeneratedValue
private long id;
}
и критерии:
Criteria c=sess.createCriteria(Order.class)
.createCriteria("type")
.setProjection(
Projections.projectionList()
.add(Projections.groupProperty("id"))
.add(Projections.rowCount(),"rowcount")
)
.addOrder(org.hibernate.criterion.Order.desc("rowcount"));
for (Object[] result:(List<Object[]>) c.list()){
System.out.println("type id: " + result[0] + "\tcount: " + result[1]);
}