Course.java 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package nju.seec.helper.entity;
  2. import lombok.Data;
  3. import lombok.experimental.Accessors;
  4. import org.hibernate.annotations.*;
  5. import javax.persistence.CascadeType;
  6. import javax.persistence.Entity;
  7. import javax.persistence.ForeignKey;
  8. import javax.persistence.Table;
  9. import javax.persistence.*;
  10. import java.time.LocalDateTime;
  11. import java.util.List;
  12. /**
  13. * @author cst
  14. */
  15. @Data
  16. @Accessors(chain = true)
  17. @Entity
  18. @Table(name = "course", uniqueConstraints = @UniqueConstraint(name = "course_name_unique", columnNames = {"delete_at", "teacher_id", "name"}))
  19. @DynamicUpdate
  20. @DynamicInsert
  21. @Where(clause = "delete_at = 0")
  22. //@Cacheable
  23. //@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
  24. public class Course {
  25. @Id
  26. @GeneratedValue(strategy = GenerationType.IDENTITY)
  27. private Long id;
  28. @Column(nullable = false)
  29. private String name;
  30. @Column(nullable = false)
  31. private String bio;
  32. @Column(nullable = false)
  33. private String code;
  34. @Column(name = "create_at", nullable = false, updatable = false)
  35. @CreationTimestamp
  36. private LocalDateTime createAt;
  37. @ManyToOne(cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.REFRESH}, fetch = FetchType.LAZY)
  38. @JoinColumn(name = "teacher_id", nullable = false, foreignKey = @ForeignKey(name = "course_teacher"))
  39. private User teacher;
  40. @ColumnDefault("0")
  41. @Column(name = "delete_at", nullable = false)
  42. private Long deleteAt = 0L;
  43. @Type(type = "json")
  44. @Column(columnDefinition = "json", name = "knowledge_id")
  45. private List<String> knowledgeId;
  46. }