Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.fsep.abacus.models;
- import lombok.*;
- import javax.persistence.*;
- import java.util.List;
- /**
- * 25.08.2017
- *
- * @author Marsel Sidikov (First Software Engineering Platform)
- * @version 1.0
- */
- @Entity
- @Getter
- @Setter
- @ToString
- @NoArgsConstructor
- @AllArgsConstructor
- @Builder()
- @SqlResultSetMappings({
- @SqlResultSetMapping(
- name = "classroomMapping",
- classes = @ConstructorResult(targetClass = Classroom.class,
- columns = {@ColumnResult(name = "id", type = Long.class),
- @ColumnResult(name = "class_title", type = String.class),
- @ColumnResult(name = "lessons_count", type = Integer.class)})),
- @SqlResultSetMapping(
- name = "classroomMappingWithCenterName",
- classes = @ConstructorResult(targetClass = Classroom.class,
- columns = {@ColumnResult(name = "id", type = Long.class),
- @ColumnResult(name = "class_title", type = String.class),
- @ColumnResult(name = "lessons_count", type = Integer.class),
- @ColumnResult(name = "center_name", type = String.class)})),}
- )
- @NamedNativeQueries({
- @NamedNativeQuery(name = "Classroom.findAllByPartnerCreatorId",
- query = "SELECT * FROM classroom\n" +
- "LEFT JOIN (SELECT lesson.classroom_id, COUNT(lesson.id) AS lessons_count\n" +
- " FROM lesson\n" +
- " JOIN (SELECT *\n" +
- " FROM course\n" +
- " WHERE CURRENT_TIMESTAMP BETWEEN start_date AND finish_date) AS alias\n" +
- " ON lesson.course_id = alias.id\n" +
- " GROUP BY lesson.classroom_id) AS lessons ON lessons.classroom_id = classroom.id\n" +
- " WHERE classroom.partner_creator_id = :param1", resultSetMapping = "classroomMapping"),
- @NamedNativeQuery(name = "Classroom.findAll",
- query = "SELECT *\n" +
- "FROM classroom\n" +
- " LEFT JOIN (SELECT\n" +
- " lesson.classroom_id,\n" +
- " COUNT(lesson.id) AS lessons_count\n" +
- " FROM lesson\n" +
- " JOIN (SELECT *\n" +
- " FROM course\n" +
- " WHERE CURRENT_TIMESTAMP BETWEEN start_date AND finish_date) AS alias\n" +
- " ON lesson.course_id = alias.id\n" +
- " GROUP BY lesson.classroom_id) AS lessons ON lessons.classroom_id = classroom.id\n" +
- " LEFT JOIN abacus_user ON classroom.partner_creator_id = abacus_user.id",
- resultSetMapping = "classroomMappingWithCenterName")
- })
- public class Classroom {
- public Classroom(Long id, String classTitle, Integer lessonsCount) {
- this.id = id;
- this.classTitle = classTitle;
- this.lessonsCount = lessonsCount;
- }
- public Classroom(Long id, String classTitle, Integer lessonsCount, String centerName) {
- this.id = id;
- this.classTitle = classTitle;
- this.lessonsCount = lessonsCount;
- this.centerName = centerName;
- }
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private Long id;
- private String classTitle;
- @ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "partner_creator_id")
- private User partnerCreator;
- @OneToMany(mappedBy = "classroom")
- private List<Lesson> lessons;
- @Transient
- private Integer lessonsCount;
- @Transient
- private String centerName;
- public boolean of(User partner) {
- return this.partnerCreator.equals(partner);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement