Hibernate基础之九:多对多,单/双向关联 @ManyToOne @OneToMany



1.组件映射,一个类中包含另一个

组件上@Eembeded



2.多对一,单向关联

“多的”聚合“一的”1个实例,
Group--User
user的getGroup上加@ManyToOne

@Entity
@Table(name="t_Group")
public class Group 
{
	private int id;
	private String name;
	
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}

@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()

@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里边不需要注解

@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


@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;
	}


@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()
{
}











  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: @onetomany和@manytooneHibernate框架中的注解,用于描述实体类之间的关系。 @onetomany表示一对多的关系,即一个实体类对应多个另一个实体类的对象。例如,一个班级对应多个学生,可以使用@onetomany注解来描述这种关系。 @manytoone表示多对一的关系,即多个实体类对应一个另一个实体类的对象。例如,多个订对应一个客户,可以使用@manytoone注解来描述这种关系。 ### 回答2: @onetomany和@manytoone是数据库中两种常见的关系映射,用来描述表与表之间的关系。其中,@onetomany表示一个实体与多个实体的关系,@manytoone表示多个实体与一个实体的关系。 @onetomany关系映射可以理解为“一对多”的关系,也就是说一个表中的记录可以对应到另一个表中的多条记录。比如说,一个学院可以有多个专业,那么学院表和专业表之间就可以使用@onetomany来描述这种关系。在实际操作中,通常会在多的那一方定义一个外键,用来关联到“一”的那一方的主键上。 @manytoone关系映射则可以理解为“多对一”的关系,也就是说多个表中的记录可以对应到另一个表中的同一条记录。比如说,多个学生可以属于同一个班级,那么学生表和班级表之间就可以使用@manytoone来描述这种关系。在实际操作中,通常会在“多”那一方定义一个外键,用来关联到“一”的那一方的主键上。 需要注意的是,@onetomany和@manytoone只是关系映射的一种方式,在实际应用中还需要根据具体情况来选择适合的方式。此外,在使用时还需要注意关系的维护和数据的一致性,避免出现关系错乱或者数据冗余等问题。 ### 回答3: @onetomany和@manytoone是两种不同的映射关系,通常应用于关系型数据库中的表之间的联系。 @onetomany指的是一对多的关系,也就是说,一个实体(或对象)与另一个实体(或对象)之间存在一对多的关联关系。在关系型数据库中,这种关系通常通过外键来实现,也就是在多的一端(子表)中添加一列,该列保存着主表的主键,从而实现与主表的关联。应用程序中查询多的一端时,可以通过ORM框架将查询结果映射到对应的实体对象中,从而方便进行数据操作和处理。 @manytoone则与@onetomany相反,它指的是多对一的关系。在关系型数据库中,这种关系通常通过在多的一端(子表)中添加外键来实现。应用程序中,查询的结果和处理都与@onetomany类似。 这两种映射关系在企业级开发中非常常见,经常被用于开发各种业务系统。例如,在一个订管理系统中,一个客户可以对应多个订,这就是一个@onetomany的关系。而一个订只能对应一个客户,这就是一个@manytoone的关系。只有深入理解这两种关系的含义和使用方法,才能在实际开发中灵活运用ORM框架。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值