Hibernate中的CRUD具有一对多映射

时间:2014-09-08 17:21:49

标签: java hibernate

我在数据库中有三个实体和三个表及其关系:

 Class person {

 int id;

 @OneToMany(mappedBy = "person", fetch = FetchType.LAZY)
 List<Comment> comments;

 @OneToMany(mappedBy = "person", fetch = FetchType.LAZY)
 List<CellPhone> cellPhones;

 }

 Class Comment {

 String content;    

 @ManyToOne
 @JoinColumn(name = "id")
 Person person;

 }

 Class CellPhone {

 String mark;    

 @ManyToOne
 @JoinColumn(name = "id")
 Person person;

 }

Hibernate是否支持我做类似的事情?

  • 插入一个新人,它会自动插入到CellPhone和Comment中,而不是由每个实体插入。
  • 删除具有给定ID的人,然后按人员ID自动删除CellPhone和Comment及其关系?
  • 让我们给一个人ID,它会得到所有评论和CellPhones的人吗?
  • 更新某个人的评论和CellPhone中的内容并保存一个人,它会自动保存CellPhone和Comment吗?

一般情况下,我只想设置/获取人物对象的CellPhone和Comment,然后调用getPerson(人物),保存(人物)或删除(人物)等而不获取(评论),保存(评论)或删除(手机)..

请帮我澄清一下。感谢。

2 个答案:

答案 0 :(得分:2)

你的所有问题的答案都是肯定的。

具体来说,对于问题1,2和4,请看一下Hibernate级联:

  1. Hibernate Documentation on cascading
  2. Mkyong Article on cascading
  3. 对于问题3,Hibernate将在您请求后自动获取其他实体(通过调用其get方法)。

答案 1 :(得分:2)

你看过CascadeType吗? Here是关于此主题的教程。 HTH