您的位置:首页 > 其它

JPA实现一对多(OneToMany)关联

2017-08-11 09:37 330 查看


JPA实现一对多(OneToMany)关联

 

(2012-10-29 20:18:58)


转载▼

标签: 


杂谈

分类: 技术备忘
 

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 ……

 

}

 

Cas
fcad
cade 级联操作 

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)来维护这种关联。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: