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

来源:互联网 发布:淘宝新店扶植期 编辑:程序博客网 时间:2024/06/01 14:34

上一章讲到了基于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 0
原创粉丝点击