package nju.seec.helper.entity; import lombok.Data; import lombok.experimental.Accessors; import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicUpdate; import javax.persistence.*; import java.time.LocalDateTime; /** * @author cst */ @Data @Accessors(chain = true) @Entity @Table(name = "comment", indexes = {@Index(name = "slide_page_top", columnList = "slide_id"), @Index(name = "slide_page_top", columnList = "page_number"), @Index(name = "slide_page_top", columnList = "top_number")}) @DynamicUpdate @DynamicInsert public class Comment { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "slide_id", nullable = false) private Long slideId; @Column(name = "page_number", nullable = false) private Integer pageNumber; @Column(name = "`show`", nullable = false, columnDefinition = "bit(1) default true not null") private Boolean show = true; @Column(name = "top_number", nullable = false, columnDefinition = "int default 0 not null") private Integer topNumber = 0; @Column(nullable = false) private String title; @Column(nullable = false, columnDefinition = "text") private String content; @ManyToOne(cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.REFRESH}, fetch = FetchType.LAZY) @JoinColumn(name = "user_id", nullable = false, foreignKey = @ForeignKey(name = "comment_user")) private User user; @Column(name = "create_at", updatable = false, nullable = false) @CreationTimestamp private LocalDateTime createAt; @OneToOne(mappedBy = "comment", fetch = FetchType.LAZY, cascade = CascadeType.ALL) private Reply reply; }