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

相关文章推荐

Hibernate属性中 @JoinColumn与@JoinTable、是否使用ForeignKey的操作数据库的效率区别

转自:http://kylinsoong.iteye.com/blog/852213 

JPA中@JoinTable和@JoinColumn注解的使用

默认情况下,JPA 持续性提供程序在映射多对多关联(或在单向的一对多关联中)的拥有方上的实体关联时使用一个连接表。连接表名称及其列名均在默认情况下指定,且 JPA 持续性提供程序假设:在关系的拥有方上...

@JoinTable和@JoinColumn

学习 原文地址:@JoinTable和@JoinColumn作者:雪后DE阳光 ----转载过来的。根据自己的理解修改了一下,便于以后阅读 默认情况下,JPA 持续性提供程序在映射多对多...

码农小汪-Hibernate学习9-hibernate双向关联关系注解表示@OneToMany mappedBy @ManyToMany @JoinTable

之前我学习了单向的关联,现在继续学习,双向的关联。这个关联关系的理解还是有点复杂,慢慢的理解懂了就好啦!这个过程不是一蹴而就的。我们需要不断的积累,才可以有所成绩的。年轻人,不要怕~慢慢来对啦,有的时...

码农小汪-Hibernate学习8-hibernate关联关系注解表示@OneToMany mappedBy @ManyToMany @JoinTable

最近我也是有点郁闷,到底是程序中处理关联关系,还是直接使用外键处理关联关系呢?这个的说法不一致!程序中处理这种关联关系的话,自己去维护这种约束。这种很乐观的一种做法!或者是直接在数据库中处理这种直接的...

Hibernate中mappedBy和@JoinColumn二者的使用心得

在单向关系中没有mappedBy,因此使用@JoinColumn建立外键关联,建立外键的一端即主控端,主控方相当于拥有指向另一方的外键的一方。 1、一对一和多对一的@JoinColumn注解的都是在...

Hibernate中@OneToMany与ManyToOne的mappedBy和@JoinColumn区别

@JoinColumnHibernate的@OneToMany和@ManyToOne都可以用@JoinColumn。@JoinColumn有name属性需要设置成为多的一方的外键,当@OneToMan...

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

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

HIBERNATE 单向关系中的JoinColumn

转载于:http://hi.baidu.com/286177943/blog/item/cce6661ae7e7f6f5ae51336f.html1.person与address的一对一单向关系: ...

hibernate--错误:javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey

错误:javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey hibernate4的hibernate-...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mappedBy跟JoinColumn/JoinTable
举报原因:
原因补充:

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