Course.java 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package nju.seec.helper.entity;
  2. import lombok.Data;
  3. import lombok.experimental.Accessors;
  4. import org.hibernate.annotations.CreationTimestamp;
  5. import org.hibernate.annotations.DynamicInsert;
  6. import org.hibernate.annotations.DynamicUpdate;
  7. import javax.persistence.*;
  8. import java.time.LocalDateTime;
  9. /**
  10. * @author cst
  11. */
  12. @Data
  13. @Accessors(chain = true)
  14. @Entity
  15. @Table(name = "course",
  16. uniqueConstraints = @UniqueConstraint(name = "course_name_constraint", columnNames = {"teacher_id", "delete_at", "name"}))
  17. @DynamicUpdate
  18. @DynamicInsert
  19. public class Course {
  20. @Id
  21. @GeneratedValue(strategy = GenerationType.IDENTITY)
  22. private Long id;
  23. @Column(nullable = false)
  24. private String name;
  25. @Column(nullable = false)
  26. private String bio;
  27. @Column(nullable = false)
  28. private String code;
  29. @Column(name = "create_at", nullable = false, updatable = false)
  30. @CreationTimestamp
  31. private LocalDateTime createAt;
  32. @ManyToOne(cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.REFRESH}, fetch = FetchType.LAZY)
  33. @JoinColumn(name = "teacher_id", nullable = false)
  34. private User teacher;
  35. @Column(name = "delete_at", columnDefinition = "bigint default 0 not null")
  36. private Long deleteAt = 0L;
  37. }