Hibernate Criteria:按一对多关系中的子实体数量排序

时间:2012-09-16 09:30:56

标签: java hibernate criteria-api hibernate-criteria

我有2个实体:教师和课程是一对多的关系,即 - 教师可以提供多个课程,但它也可以不提供。

我正在尝试根据他们提供的课程数来对院系进行排序,这样做:

criteriaQuery.orderBy(criteriaBuilder.asc(criteriaBuilder.size(root.get(Faculty_.courses))));

问题是它失败了

criteriaBuilder.size(root.get(Faculty_.courses)) 

带有NullPointerException,因为某些院系的Faculty_.courses为null。 请帮助我以更好的方式写这个,以便它考虑到课程为空的情况。

注意:我必须使用Hibernate Criteria,因为这是具有分页和内容的更大查询的一部分。因此,使用查询语言编写它不是一种选择。

非常感谢

1 个答案:

答案 0 :(得分:2)

你应该以一种总是有一个列表(或集合)或课程的方式来编写Faculty,如果没有,则为空而不是null

@OneToMany
private Set<Course> courses = new HashSet<Course>();