mappedBy跟JoinColumn/JoinTable

转载 2011年01月24日 12:05:00

对于mappedBy复习下:

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了,这样就可以防止一个空的身份证记录进数据库.

对Jpa中Entity关系映射中mappedBy的理解

一。mappedBy 单向关系不需要设置该属性,双向关系必须设置,避免双方都建立外键字段   数据库中1对多的关系,关联关系总是被多方维护的即外键建在多方,我们在单方对象的@OneToMany(...
  • petercnmei
  • petercnmei
  • 2017年02月06日 15:40
  • 1830

配置spring整合jpa自动生成数据表

配置spring整合jpa自动生成数据表 applicationContext.xml
  • a772304419
  • a772304419
  • 2018年01月12日 19:18
  • 13

mappedBy和JoinColumn实质上指向的是同一个表即外键作为主键所在的表对应的实体

@Entity(name="DFSSTUDENT") @Table(name="DFSSTUDENT") @SuppressWarnings("serial") public class Dfsstu...
  • bestcxx
  • bestcxx
  • 2016年06月27日 18:08
  • 1142

hibernate注解(二)

本篇将向大家介绍表关联的注解方式。 1. 一对一(One-to-one) 使用@OneToOne注解可以建立实体bean之间的一对一的关联.一对一关联有三种情况:一是关联的实体都共享同样的主键,二...
  • wangpeng047
  • wangpeng047
  • 2013年03月31日 20:54
  • 17560

mappedBy的作用

mappedBy的意思就是“被映射”,即mappedBy这方不用管关联关系,关联关系交给另一方处理 1.规律:凡是双向关联,mapped必设,因为根本都没必要在2个表中都存在一个外键关联,在数据...
  • sinat_25926481
  • sinat_25926481
  • 2015年11月27日 09:28
  • 2809

Hibernate Annotation @mappedBy含义在使用onetoone 时候【外键双向关联】(十三)

1 package com.bjsxt.hibernate; import javax.persistence.Entity; import javax.persistence.GeneratedV...
  • jintianhen1
  • jintianhen1
  • 2013年12月17日 14:06
  • 2029

@OneToMany三种设置方式详解

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2...
  • zq33312757
  • zq33312757
  • 2016年02月25日 15:02
  • 5078

常用注解的使用

1) 设计表方法 加中间表是为了
  • u013777684
  • u013777684
  • 2014年04月07日 12:29
  • 450

Hibernate注解大全和实战

声明实体Bean @Entity public class Flight implements Serializable { Long id; @Id public Long getId...
  • he90227
  • he90227
  • 2014年08月21日 14:11
  • 1180

Doctrine学习笔记(实体OneToOne) —— 3

symfony2 doctrine onetoonet entity,
  • xu5733127
  • xu5733127
  • 2016年03月31日 14:11
  • 574
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mappedBy跟JoinColumn/JoinTable
举报原因:
原因补充:

(最多只允许输入30个字)