转自:https://blog.csdn.net/qq_32444825/article/details/77084580

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)来维护这种关联。

posted on 2017-10-24 21:47  Sharpest  阅读(1820)  评论(0编辑  收藏  举报