Hibernate关系映射级别注解(一对一双向外键关联、一对一双向外键联合主键)

来源:互联网 发布:dota和dota2区别 知乎 编辑:程序博客网 时间:2024/05/17 06:08

一对一双向外键关联

这个一对一双向外键关联要怎么理解,双方都持有对方的引用,也就是你中有我,我中有你。
以前一篇的例子来说,学生方持有身份证类的引用,身份证类也持有一个学生对象的引用,这两个引用都充当各自表中的外键。

主控方的配置和一对一单向外键关联中的是一样的,不一样的地方是被控方。被控方的引用属性上边也要加上@OneToOne注解,其中要设置一下mappedBy属性,这个mappedBy属性指定了把控制权交给了主控方,这里要指定主控方对应的外键属性。
这里要注意,双向关联,必须设置mappedBy属性。因为双向关联只能交给一方去控制,不可能在双方都设置外键保存关联关系,否则双方都无法保存。

之前的例子中,主控方Students类不需要改变,主要修改身份证类。加一个private Students stu并进行封装。注意对于前边的pid的注解是写在属性上边而不是get方法上边,所以stu的注解也是写在属性的上方,要保持一致。

    @OneToOne(mappedBy="card")    private Students stu;

然后要注意在配置文档中进行配置

    <mapping class="oto_bfk.Students"/>    <mapping class="oto_bfk.IdCard"/>

然后是测试类,测试方法不需要改变,结果没有问题。

一对一双向外键联合主键

联合主键需要借助主键类来实现
首先我们要创建一个主键类,这个主键类要添加一个@Embeddable注解。
主键类必须实现Serializable接口,重写hashCode和equals方法。

然后在创建一个实体类,在实体类所对应的联合主键属性上边添加@EmbeddedId这个属性级别注解

阅读全文
0 0
原创粉丝点击