如何在jpa中加载一个到多个关系实体与子实体的计数

时间:2012-09-25 21:02:19

标签: hibernate jpa orm toplink

我在处理Spring / Hibernate / JPA时遇到了这个问题。

以下是我的问题的大纲。

我在学生和出勤表之间建立了OneToMany关系。

以下是我的实体的构建方式:

@Entity
class Student{
@Id
private Long id;
    @OneToMany(mappedBy = "student",
               cascade = { CascadeType.PERSIST, CascadeType.MERGE,
                           CascadeType.REFRESH })
  private List<Attendance> attendances;
}

@Entity
class Attendance{

  @ManyToOne
  @JoinColumn(name = "id")
 private Student student;
}

现在我想查询所有学生和出勤人数(出勤人数)。

这是我尝试过的,没有任何成功:

select P.id, N from Student s left join s.attendances, IN(s.attendances) as N;

上面的脚本是一个名为Query的复杂脚本的一部分,还有其他实体也参与其中但我对于将出席次数计入N的概念感到很遗憾。

任何形式的帮助都表示赞赏。

1 个答案:

答案 0 :(得分:0)

您已将其标记为Hibernate,因此使用HQL时您应该能够编写:

select student.id, count(student.attendances) from Student as student