| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package nju.seec.helper.entity;
- import lombok.Data;
- import lombok.experimental.Accessors;
- import nju.seec.helper.entity.converter.ListConverter;
- import nju.seec.helper.util.enums.QuizState;
- import nju.seec.helper.util.enums.QuizType;
- import org.hibernate.annotations.CreationTimestamp;
- import org.hibernate.annotations.DynamicInsert;
- import org.hibernate.annotations.DynamicUpdate;
- import org.hibernate.annotations.UpdateTimestamp;
- 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 = {"slide_id", "delete_at", "name",}))
- @DynamicInsert
- @DynamicUpdate
- 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;
- @Convert(converter = ListConverter.class)
- 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;
- @Basic
- @Column(name = "create_at", nullable = false, updatable = false)
- @CreationTimestamp
- private LocalDateTime createAt;
- @Basic
- @Column(name = "update_at", nullable = false)
- @UpdateTimestamp
- private LocalDateTime updateAt;
- @Column(name = "delete_at", nullable = false, columnDefinition = "bigint default 0 not null")
- private Long deleteAt = 0L;
- }
|