首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

hibernate 一对一 跟 N-1

2012-08-16 
hibernate 一对一 和 N-1Hibernate 一对一外键单向关联? ???事实上,单向1-1与N-1的实质是相同的,1-1是N-1

hibernate 一对一 和 N-1

Hibernate 一对一外键单向关联? ??

?事实上,单向1-1与N-1的实质是相同的,1-1是N-1的特例,单向1-1与N-1的映射配置也非常相似。只需要将原来的many-to-one元素增加unique="true"属性,用于表示N的一端也必须是唯一的,在N的一端增加了唯一的约束,即成为单向1-1。基于外键的单向1-1的配置将与无连接表N-1关联的many-to-one增加unique="true"属性即可。

?

one-to-one 不会加载字段,它告诉HIBERNATE 怎样加载其引用对象.如何加载呢,默认根据?主键加载其引用对象.如在t_person 中查到id=2,自动加载t_idCard 中id=2的对象信息.?constrained="true",表明person主键是个外键,表示当前主键上存在着idCard约束,当?前主键id作为外键,参照了idCard.?

?

大家都知道hibernate中的one-to-one映射主要有两种策略,(1)一对一主键关联(单向和双向)。(2)一对一外键映射(单项和双向)。本文主要讲解一下,一对一外键映射中的双向问题,在此前先通过一个实例了解。

? person和idCard,是一种一对一的关系,其中
??
t_person表??????????????????????????????
id???????name?????? idCard(unique)?
1?????????张三?????
2 ??王五?????? 1?

其中王五是没有idcard,这也符合现实中的,有些人是没有身份证的。
t_idCard表
id???????? cardNo?
1 ?? 11111111111111?

实体类:
??? IdCard

?
Person的:

?
(3)
向t_person中插入数据:

修改为<one-to-one name="person"?class="Person"? property-ref="idCard"/>?
因为:如果不修改则idCard会根据自己的id和person中的id比较(因为one-to-one是通过id查找到的),这样是不符合要求的,因为我们t_idcard中的id和t_person中 Card_ID相比较,这样的话可以通过
property-ref="idCard"?的设置找到t_person表中Card_ID和它作比较找到我们要找的数据。

?

?

热点排行