Hibernate学习——(六)基于Annotation的一对一双向外键映射

上一章讲到了基于Annotation的一对一单向外键映射,现在来学习一下一对一双向外键映射。基本方法和单向外键映射是一样

的,直接在另一个类中也加上@oneToOne这个annotation即可。但是需要注意的是,如果仅仅是这样的话,会生成两条外键约束,很

没有必要,因此我们在被拥有方的@oneToOne注解中加入mappedBy属性并设置为拥有方的关联属性名即可。

 1>只有OneToOne,OneToMany,ManyToMany上才有mappedBy属性,ManyToOne不存在该属性; 

2>mappedBy标签一定是定义在被拥有方的,他指向拥有方; 

3>mappedBy的含义,应该理解为,拥有方能够自动维护跟被拥有方的关系,当然,如果从被拥有方,通过手工强行来维护拥有

方的关系也是可以做到的; 

4>mappedBy跟joinColumn/JoinTable总是处于互斥的一方,可以理解为正是由于拥有方的关联被拥有方的字段存在,拥有方才拥

有了被拥有方。mappedBy这方定义JoinColumn/JoinTable总是失效的,不会建立对应的字段或者表。

eg:Manager.java

        @OneToOne()
	@JoinColumn(name="man_id",referencedColumnName="manager_id")
	public Manager_Msg getManager_msg() {
		return manager_msg;
	}

(referencedColumnName未设置时,默认为另一个表的主键)

Manager_msg.java

	@OneToOne(mappedBy="manager_msg")
	//@JoinColumn(name="msg_id")    已经失效
	public Manager getManager() {
		return manager;
	}
该设置方式表明主导权在Manager,由Manager对象的manager_msg属性来主控

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值