|
|
/***********************************************************
|
|
|
* @Description : 考试表,要有题目、总分数、时间限制、有效日期、创建者等字段
|
|
|
* @author : 梁山广(Laing Shan Guang)
|
|
|
* @date : 2019/5/14 07:42
|
|
|
* @email : liangshanguang2@gmail.com
|
|
|
***********************************************************/
|
|
|
// 定义包名,用于组织类文件,避免命名冲突
|
|
|
package lsgwr.exam.entity;
|
|
|
|
|
|
// 导入Jackson库的JsonFormat注解,用于JSON序列化时自定义日期格式
|
|
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
|
// 导入Lombok库的Data注解,用于自动生成getter、setter、equals、hashCode和toString方法
|
|
|
import lombok.Data;
|
|
|
// 导入Hibernate的DynamicUpdate注解,用于在实体更新时只更新发生变化的字段
|
|
|
import org.hibernate.annotations.DynamicUpdate;
|
|
|
// 导入JPA的Entity注解,用于声明该类是一个JPA实体类
|
|
|
import javax.persistence.Entity;
|
|
|
// 导入JPA的Id注解,用于声明该类中的某个字段作为主键
|
|
|
import javax.persistence.Id;
|
|
|
// 导入Java的Date类,用于表示日期和时间
|
|
|
import java.util.Date;
|
|
|
|
|
|
@Entity
|
|
|
@Data
|
|
|
@DynamicUpdate
|
|
|
|
|
|
/**
|
|
|
* 考试实体类
|
|
|
*/
|
|
|
public class Exam {
|
|
|
// 使用JPA的@Id注解声明该字段为主键
|
|
|
/**
|
|
|
* 考试ID,唯一标识一场考试
|
|
|
*/
|
|
|
@Id
|
|
|
private String examId;
|
|
|
/**
|
|
|
* 考试名称
|
|
|
*/
|
|
|
private String examName;
|
|
|
/**
|
|
|
* 考试头像或图标
|
|
|
*/
|
|
|
private String examAvatar;
|
|
|
/**
|
|
|
* 考试描述或简介
|
|
|
*/
|
|
|
private String examDescription;
|
|
|
/**
|
|
|
* 存储所有问题ID的字符串,可能是逗号分隔的ID列表
|
|
|
*/
|
|
|
private String examQuestionIds;
|
|
|
/**
|
|
|
* 存储所有单选题ID的字符串
|
|
|
*/
|
|
|
private String examQuestionIdsRadio;
|
|
|
/**
|
|
|
* 存储所有多选题ID的字符串
|
|
|
*/
|
|
|
private String examQuestionIdsCheck;
|
|
|
/**
|
|
|
* 存储所有判断题ID的字符串
|
|
|
*/
|
|
|
private String examQuestionIdsJudge;
|
|
|
/**
|
|
|
* 考试总分
|
|
|
*/
|
|
|
private Integer examScore;
|
|
|
/**
|
|
|
* 单选题总分
|
|
|
*/
|
|
|
private Integer examScoreRadio;
|
|
|
/**
|
|
|
* 多选题总分
|
|
|
*/
|
|
|
private Integer examScoreCheck;
|
|
|
/**
|
|
|
* 判断题总分
|
|
|
*/
|
|
|
private Integer examScoreJudge;
|
|
|
/**
|
|
|
* 创建者ID,标识谁创建了这场考试
|
|
|
*/
|
|
|
private String examCreatorId;
|
|
|
/**
|
|
|
* 考试时间限制,单位可能是分钟
|
|
|
*/
|
|
|
private Integer examTimeLimit;
|
|
|
/**
|
|
|
* 考试开始时间,使用Jackson的@JsonFormat注解自定义日期格式
|
|
|
*/
|
|
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
|
|
private Date examStartDate;
|
|
|
/**
|
|
|
* 考试结束时间
|
|
|
*/
|
|
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
|
|
private Date examEndDate;
|
|
|
/**
|
|
|
* 创建时间,设计数据库表时设置了自动插入当前时间,因此在Java代码中无需手动设置。
|
|
|
* 使用Jackson的@JsonFormat注解自定义日期格式以便于前端展示。
|
|
|
*/
|
|
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
|
|
private Date createTime;
|
|
|
/**
|
|
|
* 更新时间,设计数据库表时也设置了自动插入当前时间(或更新为当前时间),在Java代码中无需手动维护。
|
|
|
* 同时,由于使用了Hibernate的@DynamicUpdate注解,当数据库中的实体数据发生变化时,该字段会自动更新为当前时间。
|
|
|
* 使用Jackson的@JsonFormat注解自定义日期格式以便于前端展示。
|
|
|
*/
|
|
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
|
|
private Date updateTime;
|
|
|
}
|