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 = "course", uniqueConstraints = @UniqueConstraint(name = "course_name_constraint", columnNames = {"teacher_id", "delete_at", "name"})) @DynamicUpdate @DynamicInsert public class Course { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String name; @Column(nullable = false) private String bio; @Column(nullable = false) private String code; @Column(name = "create_at", nullable = false, updatable = false) @CreationTimestamp private LocalDateTime createAt; @ManyToOne(cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.REFRESH}, fetch = FetchType.LAZY) @JoinColumn(name = "teacher_id", nullable = false) private User teacher; @Column(name = "delete_at", columnDefinition = "bigint default 0 not null") private Long deleteAt = 0L; }