1 package dst.ass1.jpa.model.impl;
3 import dst.ass1.jpa.model.ICourse;
4 import dst.ass1.jpa.model.ILecturer;
5 import dst.ass1.jpa.model.ILesson;
6 import dst.ass1.jpa.util.Constants;
8 import javax.persistence.*;
9 import java.util.ArrayList;
10 import java.util.Collection;
13 @Table(name = Constants.T_LECTURER)
14 @PrimaryKeyJoinColumn(name = "id")
15 @NamedQuery(name = Constants.Q_MOST_ACTIVE_LECTURER, query = "SELECT l" +
16 " FROM " + Constants.T_LECTURER + " l" +
17 " WHERE size(l.lessons) >= ALL(" +
18 " SELECT size(le.lessons) FROM " + Constants.T_LECTURER + " as le GROUP BY le" +
20 @NamedQuery(name = Constants.Q_UPCOMING_LESSONS, query = "SELECT lec,les" +
21 " FROM " + Constants.T_LECTURER + " as lec " +
22 " JOIN lec.lessons les" +
23 " WHERE les.course = :course AND les.start > :now" +
24 " ORDER BY les.start")
25 public class Lecturer extends Person implements ILecturer {
26 @OneToMany(targetEntity = Course.class)
27 private Collection<ICourse> courses = new ArrayList<>();
29 @ManyToMany(targetEntity = Lesson.class)
30 @JoinTable(name = Constants.J_LECTURER_LESSON,
32 @JoinColumn(name = Constants.I_LECTURER)
34 inverseJoinColumns = {
35 @JoinColumn(name = Constants.I_LESSON)
37 private Collection<ILesson> lessons = new ArrayList<>();
41 public Collection<ICourse> getCourses() {
46 public void setCourses(Collection<ICourse> courses) {
47 this.courses = courses;
51 public void addCourse(ICourse course) {
52 this.courses.add(course);
56 public Collection<ILesson> getLessons() {
61 public void setLessons(Collection<ILesson> lessons) {
62 this.lessons = lessons;
66 public void addLesson(ILesson lesson) {
67 this.lessons.add(lesson);