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 *
* 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