Comment.java 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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 = "comment",
  16. indexes = {@Index(name = "slide_page_top", columnList = "slide_id"),
  17. @Index(name = "slide_page_top", columnList = "page_number"),
  18. @Index(name = "slide_page_top", columnList = "top_number")})
  19. @DynamicUpdate
  20. @DynamicInsert
  21. public class Comment {
  22. @Id
  23. @GeneratedValue(strategy = GenerationType.IDENTITY)
  24. private Long id;
  25. @Column(name = "slide_id", nullable = false)
  26. private Long slideId;
  27. @Column(name = "page_number", nullable = false)
  28. private Integer pageNumber;
  29. @Column(name = "`show`", nullable = false, columnDefinition = "bit(1) default true not null")
  30. private Boolean show = true;
  31. @Column(name = "top_number", nullable = false, columnDefinition = "int default 0 not null")
  32. private Integer topNumber = 0;
  33. @Column(nullable = false)
  34. private String title;
  35. @Column(nullable = false, columnDefinition = "text")
  36. private String content;
  37. @ManyToOne(cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.REFRESH}, fetch = FetchType.LAZY)
  38. @JoinColumn(name = "user_id", nullable = false, foreignKey = @ForeignKey(name = "comment_user"))
  39. private User user;
  40. @Column(name = "create_at", updatable = false, nullable = false)
  41. @CreationTimestamp
  42. private LocalDateTime createAt;
  43. @OneToOne(mappedBy = "comment", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
  44. private Reply reply;
  45. }