]> git.somenet.org - pub/jan/dst18.git/blob - ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Lecturer.java
[1.2.2] "complex" query.
[pub/jan/dst18.git] / ass1-jpa / src / main / java / dst / ass1 / jpa / model / impl / Lecturer.java
1 package dst.ass1.jpa.model.impl;
2
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;
7
8 import javax.persistence.*;
9 import java.util.ArrayList;
10 import java.util.Collection;
11
12 @Entity
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" +
19         " )")
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<>();
28
29     @ManyToMany(targetEntity = Lesson.class)
30     @JoinTable(name = Constants.J_LECTURER_LESSON,
31             joinColumns = {
32                     @JoinColumn(name = Constants.I_LECTURER)
33             },
34             inverseJoinColumns = {
35                     @JoinColumn(name = Constants.I_LESSON)
36             })
37     private Collection<ILesson> lessons = new ArrayList<>();
38
39
40     @Override
41     public Collection<ICourse> getCourses() {
42         return courses;
43     }
44
45     @Override
46     public void setCourses(Collection<ICourse> courses) {
47         this.courses = courses;
48     }
49
50     @Override
51     public void addCourse(ICourse course) {
52         this.courses.add(course);
53     }
54
55     @Override
56     public Collection<ILesson> getLessons() {
57         return lessons;
58     }
59
60     @Override
61     public void setLessons(Collection<ILesson> lessons) {
62         this.lessons = lessons;
63     }
64
65     @Override
66     public void addLesson(ILesson lesson) {
67         this.lessons.add(lesson);
68     }
69 }