mappedBy的意思就是“被映射”,即mappedBy这方不用管关联关系,关联关系交给另一方处理

1.规律:凡是双向关联,mapped必设,因为根本都没必要在2个表中都存在一个外键关联,在数据库中只要定义一边就可以了

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

b) mappedBy标签一定是定义在the owned side(被拥有方的),他指向the owning side(拥有方);

c) mappedBy的含义,应该理解为,拥有方能够自动维护 跟被拥有方的关系; 

   当然,如果从被拥有方,通过手工强行来维护拥有方的关系也是可以做到的。

d) mappedBy跟JoinColumn/JoinTable总是处于互斥的一方,可以理解为正是由于拥有方的关联被拥有方的字段存在,拥有方才拥有了被 拥有方。mappedBy这方定义的JoinColumn/JoinTable总是失效的,不会建立对应的字段或者表

人跟身份证双向关联

在Person 里面定义的注解:

@OneToOne(cascade={CascadeType.ALL},optional=true) 

public IDCard getIdCard() { 

         return idCard; 

}

在IDCard 里面定义的注释: 

@OneToOne(cascade=CascadeType.ALL,mappedBy="idCard" , optional=false) 

public Person getPerson() { 

       return person; 



多了一个mappedBy这个方法,它表示什么呢?它表示当前所在表和Person的关系是定义在Person里面的idCard这个成员上面的,它表示此表是一对一关系中的从表,也就是关系是在person表里面维护的 ,这一点很重要 . Person表是关系的维护者,owner side,有主导权,它有个外键指向IDCard。 

我们也可以让主导权在IDCard上面,也就是让它产生一个指向Person的外键,这也是可以的,但是最好是让Person来维护整个关系,这样更符合我们正常的思维 .

我们也可以看到在Person里面IDCard是注释是optional=true,也就是说一个人是可以没有身份证的,但是一个身份证不可以没有人,所以在IDCard里面注释person的时候,optional就为false了,这样就可以防止一个空的身份证记录进数据库.

原文地址:https://blog.csdn.net/sinat_25926481/article/details/50066225

最新文章

  1. STM32 按键输入
  2. JSP 实现 之 调用java方法实现MySQL数据库备份和恢复
  3. Python 自带IDLE中调试程序
  4. JavaScriptOOP
  5. eclipse-整合struts和spring-maven
  6. 测试java
  7. 【推荐】Hutool 的通用工具类库
  8. Hibernate学习(五)———— hibernate一对一关系映射详解
  9. cocos2d-x C++ 原始工程引擎运行机制解析
  10. Java1的内容(学期总结)
  11. Thinkphp 3.1. 3 ueditor 1.4.3 添加水印
  12. 提示 make: 没有什么可以做的为 `all'
  13. ArrayList源码解读(jdk1.8)
  14. angular5表单验证问题
  15. Event事件冒泡和事件捕获
  16. HDU3045 Picnic Cows
  17. IE 8-不支持 placeholder 解决方法
  18. 2017.11.18 IAP下载(STM8,PIC,STM32)
  19. Queue模块初识
  20. Required MultipartFile parameter 'file' is not present error

热门文章

  1. 使用ant build build.xml报“includeantruntime was not set”警告及"Class not found: javac1.8"问题
  2. unity内存管理
  3. 如何优化APK的大小
  4. CCS3超长文字显示省略号的方法
  5. VTK教程系列:VTK基础及应用开发教程
  6. TCP和流
  7. flask_第一个程序
  8. Spread / Rest 操作符
  9. JSON parse error: Can not construct instance of model.Class: no suitable constructor found
  10. C语言中函数参数传递的本质是值传递