У меня есть учитель, у которого есть ManytoMany с семестрами.
У многих учителей может быть много семестров.
Я пытаюсь написать JPQL-запрос, где я могу найти учителя, у которого больше всего семестров.
public TeacherEntity teacherWithMostSemesters(){
EntityManager em = emf.createEntityManager();
em.createQuery("SELECT te from TeacherEntity te").getResultList();
return null;
}
Моя проблема в том, что я создал базу данных из схемы базы данных,
и он создал странную сущность с FK как для таблицы учителя, так и для таблицы семестров
package com.tvestergaard.start.data.entities;
import javax.persistence.*;
import java.util.Objects;
@Entity
@Table(name = "teacher_semester", schema = "student", catalog = "")
@IdClass(TeacherSemesterEntityPK.class)
public class TeacherSemesterEntity {
private long teachingId;
private long teachersId;
@Id
@Column(name = "teaching_ID")
public long getTeachingId() {
return teachingId;
}
public void setTeachingId(long teachingId) {
this.teachingId = teachingId;
}
@Id
@Column(name = "teachers_ID")
public long getTeachersId() {
return teachersId;
}
public void setTeachersId(long teachersId) {
this.teachersId = teachersId;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
TeacherSemesterEntity that = (TeacherSemesterEntity) o;
return teachingId == that.teachingId &&
teachersId == that.teachersId;
}
@Override
public int hashCode() {
return Objects.hash(teachingId, teachersId);
}
}
Он должен был создать отношения между ними, но вместо этого он сгенерировал таблицу из таблицы с двумя внешними ключами ...
Как я могу это исправить и сделать JPQL-запрос, который найдет учителя с наибольшим количеством преподаваемых семестров?