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

一对一双向外键关联

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

主控方的配置和一对一单向外键关联中的是一样的,不一样的地方是被控方。被控方的引用属性上边也要加上@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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值