首先感谢尚学堂的王勇老师!!!
[b]多对一[/b]
会在多的一端加入一个外键,指向一的一端,这个外键是由中的column属性定义的,如果忽略了这个属性那么默认的外键与实体的属性一致。
标签的定义示例:
使用级联:
默认不使用级联:
注:cascade="all|none|save-update|delete"
这种方式下数据库中多的一端产生外键。如果persistent状态的对象引用transient状态的对象会抛出TransientObjectException异常。
[b] 一对一主键关联(单向)[/b]
让两个实体对象的id保持相同,这样可以避免多余的字段被创建
[color=indigo]一对一主键关联映射中,默认了cascade属性[/color]
主键充当外键
[b] 一对一主键关联(双向)[/b]
[b]多对一[/b]
会在多的一端加入一个外键,指向一的一端,这个外键是由中的column属性定义的,如果忽略了这个属性那么默认的外键与实体的属性一致。
标签的定义示例:
使用级联:
<many-to-one name="group" column="groupid" cascade="all"/>
默认不使用级联:
<many-to-one name="group" column="groupid"/>
注:cascade="all|none|save-update|delete"
这种方式下数据库中多的一端产生外键。如果persistent状态的对象引用transient状态的对象会抛出TransientObjectException异常。
[b] 一对一主键关联(单向)[/b]
让两个实体对象的id保持相同,这样可以避免多余的字段被创建
<id name="id">
<!-- person的主键来源idCard,也就是共享idCard的主键 -->
<generator class="foreign">
<param name="property">idCard</param>
</generator>
</id>
<property name="name"/>
<!-- one-to-one标签的含义,指示hibernate怎么加载它的关联对象,默认根据主键加载,
constrained="true", 表明当前主键上存在一个约束,person的主键作为外键参照了idCard
-->
<one-to-one name="idCard" constrained="true"/>
[color=indigo]一对一主键关联映射中,默认了cascade属性[/color]
主键充当外键
[b] 一对一主键关联(双向)[/b]