首页 > 代码库 > 多对一双向关联
多对一双向关联
ps:双向关联与单向关联的区别在于
1、双向关联:A能推出B,B也能推出A。
单向关联,只能由A推出B或者是B推出A。
例如:一个小组有多个员工,一个员工对应一个组。从员工的角度说是多对一,从小组的角度是一对多。
1 package com.model; 2 3 import java.util.Set; 4 5 import javax.persistence.Entity; 6 import javax.persistence.OneToMany; 7 import javax.persistence.Table; 8 9 @Entity10 @Table(name="group")11 public class Group {12 private Integer id;13 private String groupName;14 private Set<Worker> workers;15 16 @OneToMany(mappedBy="group")17 public Set<Worker> getWorkers() {18 return workers;19 }20 public void setWorkers(Set<Worker> workers) {21 this.workers = workers;22 }23 public Integer getId() {24 return id;25 }26 public void setId(Integer id) {27 this.id = id;28 }29 public String getGroupName() {30 return groupName;31 }32 public void setGroupName(String groupName) {33 this.groupName = groupName;34 }35 }
1 package com.model; 2 3 import java.io.Serializable; 4 import java.util.Date; 5 6 import javax.persistence.Column; 7 import javax.persistence.Entity; 8 import javax.persistence.GeneratedValue; 9 import javax.persistence.GenerationType; 10 import javax.persistence.Id; 11 import javax.persistence.JoinColumn; 12 import javax.persistence.ManyToOne; 13 import javax.persistence.Table; 14 15 @Entity 16 @Table(name="worker") 17 public class Worker implements Serializable{ 18 /** 19 * @author yzy 20 * @2014年11月1日15:31:08 21 */ 22 private static final long serialVersionUID = 1L; 23 private Integer id; 24 private String name; 25 private String password; 26 private Integer sex; 27 private Integer age; 28 private Date birthdate; 29 private Group group; 30 private String position; 31 private String telephone; 32 private Date enterDate; 33 private Float performance; 34 private Integer gold; 35 36 public Worker(){ 37 38 } 39 40 @Id @GeneratedValue(strategy=GenerationType.AUTO) 41 @Column(name="worker_id") 42 public Integer getId() { 43 return id; 44 } 45 public void setId(Integer id) { 46 this.id = id; 47 } 48 @Column(name="worker_name") 49 public String getName() { 50 return name; 51 } 52 public void setName(String name) { 53 this.name = name; 54 } 55 @Column(name="worker_password") 56 public String getPassword() { 57 return password; 58 } 59 public void setPassword(String password) { 60 this.password = password; 61 } 62 @Column(name="worker_sex") 63 public Integer getSex() { 64 return sex; 65 } 66 public void setSex(Integer sex) { 67 this.sex = sex; 68 } 69 @Column(name="worker_age") 70 public Integer getAge() { 71 return age; 72 } 73 public void setAge(Integer age) { 74 this.age = age; 75 } 76 @Column(name="worker_birthdate") 77 public Date getBirthdate() { 78 return birthdate; 79 } 80 public void setBirthdate(Date birthdate) { 81 this.birthdate = birthdate; 82 } 83 @ManyToOne//多对一,一个员工只能在一个小组,一个小组有多名成员 84 @JoinColumn(name="group_id") 85 public Group getGroup() { 86 return group; 87 } 88 public void setGroup(Group group) { 89 this.group = group; 90 } 91 @Column(name="worker_position") 92 public String getPosition() { 93 return position; 94 } 95 public void setPosition(String position) { 96 this.position = position; 97 } 98 @Column(name="worker_telephone") 99 public String getTelephone() {100 return telephone;101 }102 public void setTelephone(String telephone) {103 this.telephone = telephone;104 }105 @Column(name="worker_enterDate")106 public Date getEnterDate() {107 return enterDate;108 }109 public void setEnterDate(Date enterDate) {110 this.enterDate = enterDate;111 }112 @Column(name="worker_performance")113 public Float getPerformance() {114 return performance;115 }116 public void setPerformance(Float performance) {117 this.performance = performance;118 }119 @Column(name="worker_gold")120 public Integer getGold() {121 return gold;122 }123 public void setGold(Integer gold) {124 this.gold = gold;125 }126 127 128 }
一对多时在多的那一方设置一的外键,如上是在Worker中设置Group的外键。双向关联必设 mappedBy属性,总是由多的一方来维护。
举例:员工和组 一个group可以有多个worker,这里从group来说是一对多 而多个worker可以属于一个group 这里从worker来说是多对一 所以
不管是多对一还是一对多 都是在多的那方加外键。也就是说双向关联时在一的那一方设置mappedBy,即在Group实体中的getWorkers()方法上头加@OneToMany(mappedBy="group")
多对一双向关联
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。