Hibernate基础之九:多对多,单/双向关联 @ManyToOne @OneToMany
2016-06-27 10:40
507 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[-]
组件映射一个类中包含另一个
多对一单向关联
一对多单向关联
一对多多对一双向关联
多对多单向关联
多对多双向关联
Group--User
user的getGroup上加@ManyToOne
[java] view
plain copy
@Entity
@Table(name="t_Group")
public class Group
{
private int id;
private String name;
@Id
@GeneratedValue
public int getId() {
return id;
}
[java] view
plain copy
@Entity
@Table(name="t_Users")
public class Users
{
private int id;
private String name;
private Group group;
@Id
@GeneratedValue
public int getId() {
return id;
}
@ManyToOne
public Group getGroup() {
return group;
}
存储用set最好,
@OneToMany
@JoinColumn(name="groupId")
getUsers()
[java] view
plain copy
@Entity
@Table(name="t_Group")
public class Group
{
private int id;
private String name;
private Set<Users> users = new HashSet<Users>();
@Id
@GeneratedValue
public int getId() {
return id;
}
@OneToMany
@JoinColumn(name="groupId")
public Set<Users> getUsers() {
return users;
}
Users里边不需要注解
[java] view
plain copy
@Entity
@Table(name="t_Users")
public class Users
{
private int id;
private String name;
@Id
@GeneratedValue
public int getId() {
return id;
}
一: @OneToMany(mappedBy="group")
多:@ManyToOne
[java] view
plain copy
@Entity
@Table(name="t_Group")
public class Group
{
private int id;
private String name;
private Set<Users> users = new HashSet<Users>();
@Id
@GeneratedValue
public int getId() {
return id;
}
@OneToMany(mappedBy="group")
public Set<Users> getUsers() {
return users;
}
[java] view
plain copy
@Entity
@Table(name="t_Users")
public class Users
{
private int id;
private String name;
private Group group;
@Id
@GeneratedValue
public int getId() {
return id;
}
@ManyToOne
public Group getGroup() {
return group;
}
teacher知道教哪些学生(Teacher里保存Student集合),学生不知道谁教(学生里边不保存Teacher信息)
双向:通过老师能找到他教那些学生,通过一个学生也能找到教他的所有老师。
要加中间表
@ManyToMany
@JoinTable(name="t_s",
joinColumns={@JoinColumn(name="teacher_id")}
inverseJoincolumns={@JoinColumn(name="student_id")}
)
getStudents()
另一侧增加:
@ManyToMany(mappedBy="students")//对方属性的名称
Set<Teacher> getTeacers()
{
}
转自:http://blog.csdn.net/null____/article/details/8155709#t0
目录(?)[-]
组件映射一个类中包含另一个
多对一单向关联
一对多单向关联
一对多多对一双向关联
多对多单向关联
多对多双向关联
1.组件映射,一个类中包含另一个
组件上@Eembeded2.多对一,单向关联
“多的”聚合“一的”1个实例,Group--User
user的getGroup上加@ManyToOne
[java] view
plain copy
@Entity
@Table(name="t_Group")
public class Group
{
private int id;
private String name;
@Id
@GeneratedValue
public int getId() {
return id;
}
[java] view
plain copy
@Entity
@Table(name="t_Users")
public class Users
{
private int id;
private String name;
private Group group;
@Id
@GeneratedValue
public int getId() {
return id;
}
@ManyToOne
public Group getGroup() {
return group;
}
3.一对多,单向关联
“一的”聚合“多的”的集合存储用set最好,
@OneToMany
@JoinColumn(name="groupId")
getUsers()
[java] view
plain copy
@Entity
@Table(name="t_Group")
public class Group
{
private int id;
private String name;
private Set<Users> users = new HashSet<Users>();
@Id
@GeneratedValue
public int getId() {
return id;
}
@OneToMany
@JoinColumn(name="groupId")
public Set<Users> getUsers() {
return users;
}
Users里边不需要注解
[java] view
plain copy
@Entity
@Table(name="t_Users")
public class Users
{
private int id;
private String name;
@Id
@GeneratedValue
public int getId() {
return id;
}
4.一对多(多对一),双向关联
双向就要mapped by=“”一: @OneToMany(mappedBy="group")
多:@ManyToOne
[java] view
plain copy
@Entity
@Table(name="t_Group")
public class Group
{
private int id;
private String name;
private Set<Users> users = new HashSet<Users>();
@Id
@GeneratedValue
public int getId() {
return id;
}
@OneToMany(mappedBy="group")
public Set<Users> getUsers() {
return users;
}
[java] view
plain copy
@Entity
@Table(name="t_Users")
public class Users
{
private int id;
private String name;
private Group group;
@Id
@GeneratedValue
public int getId() {
return id;
}
@ManyToOne
public Group getGroup() {
return group;
}
5.多对多,单向关联
单向:通过老师能找到他教那些学生,学生不知道有哪些老师教他。teacher知道教哪些学生(Teacher里保存Student集合),学生不知道谁教(学生里边不保存Teacher信息)
双向:通过老师能找到他教那些学生,通过一个学生也能找到教他的所有老师。
要加中间表
@ManyToMany
@JoinTable(name="t_s",
joinColumns={@JoinColumn(name="teacher_id")}
inverseJoincolumns={@JoinColumn(name="student_id")}
)
getStudents()
6.多对多,双向关联
互相持有set另一侧增加:
@ManyToMany(mappedBy="students")//对方属性的名称
Set<Teacher> getTeacers()
{
}
转自:http://blog.csdn.net/null____/article/details/8155709#t0
相关文章推荐
- Hibernate Oracle sequence的使用技巧
- jsp Hibernate批量更新和批量删除处理代码
- jsp hibernate的分页代码第1/3页
- Struts2+Hibernate实现数据分页的方法
- Hibernate环境搭建与配置方法(Hello world配置文件版)
- JAVA+Hibernate 无限级分类
- SSH整合中 hibernate托管给Spring得到SessionFactory
- jsp hibernate 数据保存操作的原理
- hibernate中的增删改查实现代码
- 解决hibernate+mysql写入数据库乱码
- java优化hibernate性能的几点建议
- java Hibernate延迟加载
- hibernate 常用方法介绍
- 详解Java的Hibernate框架中的注解与缓存
- 浅析Java的Hibernate框架中的继承关系设计
- 详解JDK 5 Annotation 注解之@Target的用法介绍
- Hibernate实现批量添加数据的方法
- Hibernate4在MySQL5.1以上版本创建表出错 type=InnDB
- java教程之java注解annotation使用方法
- JQuery+Ajax+Struts2+Hibernate框架整合实现完整的登录注册