3

我有 2 个实体:Faculty 和 Course,它们是一对多的关系,也就是说 - Faculty 可以提供多门课程,但也可以不提供任何课程。

我正在尝试按他们提供的课程数量对学院进行排序,这样做:

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

问题是它失败了

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

带有 NullPointerException 因为 Faculty_.courses 对于某些学院为空。请帮助我以更好的方式编写此内容,以便考虑课程为空的情况。

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

4

1 回答 1

2

您应该以始终有一个列表(或集合)或课程的方式编写 Faculty,它是空的,而不是null如果没有:

@OneToMany
private Set<Course> courses = new HashSet<Course>();
于 2012-09-16T09:47:29.027 回答