Hibernate学习——(八)基于Annotation的多对一、一对多映射

在实际应用中,更常用的不是一对一的关系,而是多对一或者一对多的关系。在Hibernate中提供了对应的Annotation注解。

一、多对一 @ManyToOne

首先建两个实体类,在本例中分别是Manager.java和Manager_Group.java,其中一个group对应多个manager。

Manager.java:(部分代码见下)

	private Manager_Group m_grp;

	@ManyToOne
	@JoinColumn(name = "groupId", referencedColumnName = "groupId")
	public Manager_Group getM_grp() {
		return m_grp;
	}
在该类中建立“一”对象的属性,m_grp,在其getter方法上加上@ManyToOne注解即可。此时生成的表为:


可见其groupId被设置为MUL,即可以重复。并且在这里添加了一条外键约束,参考group表中的groupId。


二、多对一@OneToMany

首先建两个实体类,在本例中分别是Manager.java和Manager_Group.java,其中一个group对应多个manager。

Manager_Group.java:

	private Set<Manager> Managers = new HashSet<Manager>();
	
	@OneToMany
	@JoinColumn(name="groupId",referencedColumnName="groupId")
	public Set<Manager> getManagers() {
		return Managers;
	}
在该类中建立“多”对象的属性,Managers,在其getter方法上加上@OneToMany注解即可,此时生成的表为:

有点奇怪的是这里没有生成外键约束,如果去掉joinColumn中的referencedColumnName的话,默认会生成一条指向group表主键的

外键。疑问。。。待解决。。。


三、一对多,多对一双向映射。

在学习了一对一的双向映射之后,来看一对多多对一的双向映射就很容易了。在“一”方和“多”方分别添加上述的属性以及对应的

Annotation,同时在“多”方的@OneToMany加入mappedBy属性并设置为“一”方的属性值即可。

Manager.java:

	private Manager_Group m_grp;

	@ManyToOne
	@JoinColumn(name = "groupId", referencedColumnName = "groupId")
	public Manager_Group getM_grp() {
		return m_grp;
	}
Manager_Group.java:

	@OneToMany(mappedBy="m_grp")
	//@JoinColumn(name="group_Id",referencedColumnName="groupId")
	public Set<Manager> getManagers() {
		return Managers;
	}
此时的表结构为:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值