博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hibernate的注解属性mappedBy详解
阅读量:6914 次
发布时间:2019-06-27

本文共 949 字,大约阅读时间需要 3 分钟。

mappedBy: 

1>只有OneToOne,OneToMany,ManyToMany上才有mappedBy属性,ManyToOne不存在该属性; 
2>mappedBy标签一定是定义在被拥有方的,他指向拥有方; 
3>mappedBy的含义,应该理解为,拥有方能够自动维护跟被拥有方的关系,当然,如果从被拥有方,通过手工强行来维护拥有方的关系也是可以做到的; 
4>mappedBy跟joinColumn/JoinTable总是处于互斥的一方,可以理解为正是由于拥有方的关联被拥有方的字段存在,拥有方才拥有了被拥有方。mappedBy这方定义JoinColumn/JoinTable总是失效的,不会建立对应的字段或者表。 
下面是一个例子: 
   人跟身份证双向关联 
   在Person里面定义的注解: 

在person里面定义的注释代码  
  1. @OneToOne(cascade = CascadeTye.ALL,optional = true)  
  2. public IDCard getIdCard(){  
  3.    return idCard;  
  4. }  

在idcard里面定义的注释代码  
  1. @OneToOne(cascade = CascadeType.ALL,mappedBy = "idCard",optional = false)  
  2. public Person getPerson(){  
  3.    return person;  
  4. }  

多了一个mappedBy这个方法,他表示什么呢?它表示当前所在表和Person的关系是定义在Person里面的idCard这个成员上面的,他表示此表是一对一关系中的从表,也就是关系是在person表中维护的,这是最重要的。Person表是关系的维护者,有主导权,它有个外键指向IDCard。 
我们也可以让主导权在IDCard上面,也就是让他产生一个指向Person的外键,这也是可以的,但是最好让Person来维护整个关系,这样更符合我们的思维。 
我们也可以看到在Person里面的IDCard是注释optional=true,也就是说一个人是可以没有身份证的,但是一个身份证是不可以没有人的,所以在IDCard里面注释Person的时候,optional=false了,这样就可以防止一个空的身份证记录进数据库。

转载地址:http://yrncl.baihongyu.com/

你可能感兴趣的文章
如何修改遗失的MySQL的ROOT用户密码
查看>>
leetcode121买股票
查看>>
搭建dubbo+zookeeper+dubboadmin分布式服务框架(windows平台下)
查看>>
Python利用带权重随机数解决抽奖和游戏爆装备问题
查看>>
Zabbix 源码编译安装
查看>>
指针和引用
查看>>
Python应用01 原始Python服务器
查看>>
Android应用程序与SurfaceFlinger服务的关系概述和学习计划
查看>>
WCF WinCE 中 手机端 非字符串型 datetime,int,decimal,double 等等 传递不到WCF端的解决方案...
查看>>
iis6.0 之前版本发布silverlight程序 注意事项
查看>>
SQL SERVER 2008中启用相应的功能
查看>>
Implementing a small Cron service in C# - CodeProject
查看>>
poj-2155(二维树状数组)
查看>>
Spring MVC视图解析器:Spring MVC XmlViewResolver示例
查看>>
Managing Users
查看>>
JavaScript用JQuery呼叫Server端方法
查看>>
REST::Neo4p – PERL版本的”OGM”
查看>>
ORA-19808错误一例
查看>>
DirectShowNet 使用摄像头录像+录音
查看>>
Oracle、SQL Server、MySQL数据类型对比
查看>>