我有2个实体:教师和课程是一对多的关系,即 - 教师可以提供多个课程,但它也可以不提供。
我正在尝试根据他们提供的课程数来对院系进行排序,这样做:
criteriaQuery.orderBy(criteriaBuilder.asc(criteriaBuilder.size(root.get(Faculty_.courses))));
问题是它失败了
criteriaBuilder.size(root.get(Faculty_.courses))
带有NullPointerException,因为某些院系的Faculty_.courses为null。 请帮助我以更好的方式写这个,以便它考虑到课程为空的情况。
注意:我必须使用Hibernate Criteria,因为这是具有分页和内容的更大查询的一部分。因此,使用查询语言编写它不是一种选择。
非常感谢
答案 0 :(得分:2)
你应该以一种总是有一个列表(或集合)或课程的方式来编写Faculty,如果没有,则为空而不是null
:
@OneToMany
private Set<Course> courses = new HashSet<Course>();