| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package nju.seec.helper.entity;
- import lombok.Data;
- import lombok.experimental.Accessors;
- import nju.seec.helper.enums.QuizState;
- import nju.seec.helper.enums.QuizType;
- import org.hibernate.annotations.*;
- import javax.persistence.CascadeType;
- import javax.persistence.Entity;
- import javax.persistence.ForeignKey;
- import javax.persistence.Table;
- import javax.persistence.*;
- import java.time.LocalDateTime;
- import java.util.List;
- /**
- * @author sheen
- * <p>
- * updated by cst
- */
- @Data
- @Accessors(chain = true)
- @Entity
- @Table(name = "quiz", uniqueConstraints = @UniqueConstraint(name = "quiz_name_unique", columnNames = {"delete_at", "slide_id", "name",}))
- @DynamicInsert
- @DynamicUpdate
- @Where(clause = "delete_at = 0 and slide_id in (select s.id from slide s where s.delete_at = 0) and course_id in (select c.id from course c where c.delete_at = 0)")
- //@Cacheable
- //@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
- public class Quiz {
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "id")
- private Long id;
- @Basic
- @Column(name = "name", nullable = false)
- private String name;
- @ManyToOne(cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.REFRESH}, fetch = FetchType.LAZY)
- @JoinColumn(name = "course_id", foreignKey = @ForeignKey(name = "quiz_course"))
- private Course course;
- @ManyToOne(cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.REFRESH}, fetch = FetchType.LAZY)
- @JoinColumn(name = "slide_id", foreignKey = @ForeignKey(name = "quiz_slide"))
- private Slide slide;
- @ManyToOne(cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.REFRESH}, fetch = FetchType.LAZY)
- @JoinColumn(name = "teacher_id", foreignKey = @ForeignKey(name = "quiz_teacher"))
- private User teacher;
- @Type(type = "json")
- @Column(columnDefinition = "json", nullable = false)
- private List<String> questions;
- @Enumerated(value = EnumType.STRING)
- @Column(name = "type", nullable = false)
- private QuizType type;
- @Enumerated(value = EnumType.STRING)
- @Column(name = "state", nullable = false)
- private QuizState state;
- @Column(name = "max_submit_number", nullable = false)
- private Integer maxSubmitNumber;
- @Column(name = "create_at", nullable = false, updatable = false)
- @CreationTimestamp
- private LocalDateTime createAt;
- @Column(name = "update_at", nullable = false)
- @UpdateTimestamp
- private LocalDateTime updateAt;
- @ColumnDefault("0")
- @Column(name = "delete_at", nullable = false)
- private Long deleteAt = 0L;
- }
|