Hibernate一对一单向主键关联
举例:人Person和身份证IdCard 1对1 身份证为主表
类模型
Person(从) ---------> IdCard(主)
id:int id:int
name:String cardNo:String
idCard:IdCard
表关系
Person表 IdCard表
id | name id | cardNo
1 aaa -------------> 1 8888888
2 bbb -----------à2 9999999
Person表的id既做Person的主键,又作为外键参考IdCard表主键
1.建立对象模型
IdCard.java
Person.java
2.编写配置文件
Person.hbm.xml
<!—这里的主键生成策略为外键策略,参考了对应类IdCard的主键--à
<!— <param name="property">idCard</param>中idCard说明了Person类的主键是由哪个类对象对应的表中的主键给出的à
<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"/>
IdCard.hbm.xml
测试结果:
在Person.hbm.xml中没有设置cascade="all" 但可以级联保存和查询,加上cascade="delete" 才可以级联删除
一对一双向关联
测试结果: