星空网 > 软件开发 > Java

hibernate(八)一对多关联

一、一对多单向关良

一对多单向关联与多对一相似

假设一个组有多个用户,即一(Group)对多(User)

需要在Group类中添加一个User类的Set集合(数据库中的用户不可能是重复的,所以要用Set)属性:private Set<User> users;然后在getUser()方法上添加注解:
@OneToMany和@JoinColumn(name="groupId"),如果不加@JoinColumn则会自动生成一个中间表

Group类:

package cn.orlion.hibernate.model;import java.util.Set;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.OneToMany;import javax.persistence.Table;@Entity@Table(name="t_group")public class Group {  private int id;    private String name;    private Set<User> users;  @Id  @GeneratedValue  public int getId() {    return id;  }  public void setId(int id) {    this.id = id;  }  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }  @OneToMany  @JoinColumn(name="groupId")  public Set<User> getUsers() {    return users;  }  public void setUsers(Set<User> users) {    this.users = users;  }}

User类:

package cn.orlion.hibernate.model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name="t_user")public class User {  private int id;    private String name;  @Id  @GeneratedValue  public int getId() {    return id;  }  public void setId(int id) {    this.id = id;  }  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }}

生成的sql:

create table t_group (    id integer not null auto_increment,    name varchar(255),    primary key (id)  )create table t_user (    id integer not null auto_increment,    name varchar(255),    groupId integer,    primary key (id)  )alter table t_user     add constraint FK_7ktm6l2qkykpqrf6oq01ys8wy     foreign key (groupId)     references t_group (id)

 

二、一对多双向关联

配置方式:在Group类中的getUsers()方法上添加注解@OneToMany(mappedBy="group"),如果不写mappedBy则会在user表中生成两个groupid字段

;然后在User类中添加group属性,在getGroup()方法上添加注解@ManyToOne

Group类:

 

package cn.orlion.hibernate.model;import java.util.Set;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.OneToMany;import javax.persistence.Table;@Entity@Table(name="t_group")public class Group {  private int id;    private String name;    private Set<User> users;  @Id  @GeneratedValue  public int getId() {    return id;  }  public void setId(int id) {    this.id = id;  }  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }  @OneToMany(mappedBy="group")  public Set<User> getUsers() {    return users;  }  public void setUsers(Set<User> users) {    this.users = users;  }}

 

User类:

package cn.orlion.hibernate.model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.ManyToOne;import javax.persistence.Table;@Entity@Table(name="t_user")public class User {  private int id;    private String name;    private Group group;  @Id  @GeneratedValue  public int getId() {    return id;  }  public void setId(int id) {    this.id = id;  }  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }  @ManyToOne  public Group getGroup() {    return group;  }  public void setGroup(Group group) {    this.group = group;  }}

生成的sql

create table t_group (    id integer not null auto_increment,    name varchar(255),    primary key (id)  )create table t_user (    id integer not null auto_increment,    name varchar(255),    group_id integer,    primary key (id)  )alter table t_user     add constraint FK_e5f24mh6aryt9hsy99oydps6g     foreign key (group_id)     references t_group (id)

 




原标题:hibernate(八)一对多关联

关键词:Hibernate

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

揭阳空运托运:https://www.goluckyvip.com/tag/102815.html
马鞍山空运:https://www.goluckyvip.com/tag/102816.html
桂林市空运:https://www.goluckyvip.com/tag/102817.html
包能托运吗:https://www.goluckyvip.com/tag/102818.html
什么叫158航空托运包:https://www.goluckyvip.com/tag/102819.html
包航空球托运高尔夫:https://www.goluckyvip.com/tag/102820.html
月活用户超20亿!万亿市值巨头对中国商家进一步开闸放流 :https://www.kjdsnews.com/a/1836412.html
九寨沟周围必去的景点推荐:https://www.vstour.cn/a/363190.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流