欢迎来到天天文库
浏览记录
ID:42625095
大小:314.83 KB
页数:15页
时间:2019-09-19
《hibernate中双向关联在级联情况下save对象讨论》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、hibernate中双向关联在级联情况下save对象讨论一般在双向关联的情况下,都要在一方设置mappedBy(name="xxx"),由对方主导映射关系。在多对一的情况下,一般在多的一方设置主导映射的关系(为了方便叙述,就这么叫它了,呵呵)。所谓主导这种映射关系,如group,user,就是由多的一方(user)里面产生一个外键参考一的一方(group)的主键,这时候user就是主导的一方,写mappedBy是被主导的一方。在多对多的情况下,随便由那方主导,在数据库表的结构上都是一样的,都会产生一个中间表,中间
2、表有两个字段的联合主键,分别作为外键参考两个多的一方。在一对多和多对多的双向关联的情况下,并且在cascade=CascadeType.ALL情况下,save不同方面(如主导关系一方或被主导的一方)在级联的具体表现上是不同的。分别来讨论一下。先看一对多的双向关联关系,这里就拿group和user举例。Group类如下:[java] viewplain copy1.package com.chen.hibernate.ormapping; 2. 3.import java.util.HashSet; 4.im
3、port java.util.Set; 5. 6.import javax.persistence.CascadeType; 7.import javax.persistence.Entity; 8.import javax.persistence.FetchType; 9.import javax.persistence.GeneratedValue; 10.import javax.persistence.Id; 11.import javax.persistence.OneToMany; 1
4、2.import javax.persistence.Table; 13. 14.@Entity 15.@Table(name = "t_group") 16.public class Group { 17. private int id; 18. private String name; 19. private Set users = new HashSet(); 20. 21. @Id 22. @GeneratedValue 23.
5、 public int getId() { 24. return id; 25. } 26. 27. public void setId(int id) { 28. this.id = id; 29. } 30. 1. public String getName() { 2. return name; 3. } 4. 5. public void setName(String name) { 6.
6、 this.name = name; 7. } 8. 9. // 设置mappedBy是被主导的一方 10. @OneToMany(mappedBy = "group", cascade = { CascadeType.ALL }, fetch = FetchType.LAZY) 11. public Set getUsers() { 12. return users; 13. } 14. 15. public void set
7、Users(Set users) { 16. this.users = users; 17. } 18.} User类如下:[java] viewplain copy1.package com.chen.hibernate.ormapping; 2. 3.import javax.persistence.CascadeType; 4.import javax.persistence.Entity; 5.import javax.persistence.FetchTy
8、pe; 6.import javax.persistence.GeneratedValue; 7.import javax.persistence.Id; 8.import javax.persistence.JoinColumn; 9.import javax.persistence.ManyToOne; 10.import javax.persistence
此文档下载收益归作者所有