博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hibernate(八)一对多关联
阅读量:6277 次
发布时间:2019-06-22

本文共 4158 字,大约阅读时间需要 13 分钟。

一、一对多单向关良

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

假设一个组有多个用户,即一(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
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
getUsers() { return users; } public void setUsers(Set
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
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
getUsers() { return users; } public void setUsers(Set
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)

 

转载于:https://www.cnblogs.com/orlion/p/5083636.html

你可能感兴趣的文章
HDU 2159
查看>>
String类
查看>>
POJ-2480 Longge's problem 欧拉函数
查看>>
WCF学习笔记
查看>>
服务器性能瓶颈分析方法(转载)
查看>>
矩阵微分
查看>>
安卓开发之ScrollView
查看>>
10个HTML5 实战教程 提升你的综合开发能力
查看>>
CTreeCtrl 控件实现多选并取得选中项
查看>>
开机黑屏 仅仅显示鼠标 电脑黑屏 仅仅有鼠标 移动 [已成功解决]
查看>>
MongoDB安装及shell简介
查看>>
<转>c++ builder JSONCPP 注意事项 XE2 解决编译问题 _Mfl
查看>>
Android Binder总结
查看>>
【ALearning】第三章 Android基本常见控件
查看>>
android:改动PagerTabStrip中的背景颜色,标题字体的样式、颜色和图标以及指示条的颜色...
查看>>
CSDN个人空间能再烂吗?
查看>>
吐槽身边互联网那些事儿!
查看>>
搭建自己的OpenWrt开发环境
查看>>
Redis系列一之数据结构
查看>>
qt4升级到qt5的一些问题
查看>>