1.考试类
@Entity
public classExam implementsSerializable
{
private static final long serialVersionUID=
1L;
@Id
@GeneratedValue
private Integer id;
private Integer paperId;
private Integer userId;
@Temporal(TemporalType.TIMESTAMP)
private Date startTime;
@Temporal(TemporalType.TIMESTAMP)
private Date endTime;
private Integer score;
private String remark;
private Integer status;
@OneToMany(cascade=CascadeType.ALL,
fetch = FetchType.EAGER,
mappedBy="exam")
private List<ExamUserAns> listExamUserAns= newArrayList<ExamUserAns>();
//get
and set method here ……
}
Cascade 级联操作
CascadeType. PERSIST 级联持久化 ( 保存 ) 操作
CascadeType. MERGE 级联更新 ( 合并 ) 操作
CascadeType. REFRESH 级联刷新操作,只会查询获取操作
CascadeType. REMOVE 级联删除操作
CascadeType. ALL 级联以上全部操作
Fetch 抓取是否延迟加载,默认情况一的方为立即加载,多的一方为延迟加载
mappedBy 关系维护
mappedBy= "exam" 表示在ExamUserAns 类中的 exam 属性来维护关系,这个名称必须和ExamUserAns中的exam属性名称完全一致才行。
另外需要注意,Exam类中的集合类型必须是List或者Set,不能设置为ArrayList,否则会报错
Illegal attempt to map a non collection as…
2.考试答案类
@Entity
public class ExamUserAns implements Serializable
{
private static final long serialVersionUID =
1L;
@Id
@GeneratedValue
private Integer id;
private Integer questionId;
private String answer;
private Integer score;
private String remark;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="examId")
private Exam exam;
//get and set method here ……
}
3.数据持久化存储

需要注意的是,在持久化存储时,我们只需要对Exam类进行merge或者persist即可,JPA会自动将其集合关联类进行持久化存储,而不需要我们对ExamUserAns再执行persist方法,但是我们需要设置examUserAns.setExam(exam)来维护这种关联。