как загрузить один ко многим объектам отношения в jpa с подсчетом дочерних объектов

Я столкнулся с этой проблемой, работая над 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.

любая помощь приветствуется.


person tkt986    schedule 25.09.2012    source источник


Ответы (1)


Вы пометили это как Hibernate, поэтому, используя HQL, вы сможете написать:

select student.id, count(student.attendances) from Student as student
person Alex Barnes    schedule 18.02.2013