package nju.seec.SEECdemo.data.entity.assignment; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; import nju.seec.SEECdemo.logic.service.impl.assignment.mock.MockCourse; import nju.seec.SEECdemo.util.enums.AssignmentStatus; import nju.seec.SEECdemo.util.enums.AssignmentType; import org.hibernate.annotations.LazyCollection; import org.hibernate.annotations.LazyCollectionOption; import javax.persistence.*; import java.time.LocalDateTime; import java.util.HashSet; import java.util.Set; @Data @EqualsAndHashCode(exclude = {"resultSet"}) @ToString(exclude = {"resultSet"}) @Entity @Table(name = "ENTITY_CODE") public class Code { @Id @Column(name = "id") private Integer id; @Basic @Column(name = "name", nullable = false) private String name; @Basic @Column(name = "description", nullable = false) private String description; @Enumerated(value = EnumType.STRING) @Column(name = "type", columnDefinition = "VARCHAR(255) NOT NULL") private AssignmentType type = AssignmentType.CODE; @Enumerated(value = EnumType.STRING) @Column(name = "status", columnDefinition = "VARCHAR(255) NOT NULL DEFAULT 'PREPARING'") private AssignmentStatus status = AssignmentStatus.PREPARING; @Basic @Column(name = "start_at", nullable = false) private LocalDateTime startAt; @Basic @Column(name = "end_at", nullable = false) private LocalDateTime endAt; @Basic @Column(name = "question", nullable = false) private Long questionId; @Basic @Column(name = "hash") private String initHash; @Basic @Column(name = "uuid", nullable = false) private String uuid; @Basic @Column(name = "course", nullable = false) private int courseId; @OneToMany(targetEntity = CodeResult.class, mappedBy = "code", cascade = CascadeType.REMOVE) @LazyCollection(LazyCollectionOption.EXTRA) private Set resultSet = new HashSet<>(); }