系统学习hibernate之六:一对一外键关联映射双向关联

系统学习hibernate之六:一对一外键关联映射双向关联

hibernate一对一唯一外键关联映射(双向关联Person<---->IdCard)

一对一唯一外键关联双向,需要在另一端(idcard),添加<one-to-one>标签,指示hibernate如何加载
其关联对象,默认根据主键加载person,外键关联映射中,因为两个实体采用的是person的外键维护的关系,
所以不能指定主键加载person,而要根据person的外键加载,所以采用如下映射方式:
<one-to-one name="person" property-ref="idCard"/>
1、Person的POJO类:

1 public   class  Person  {
2
3    private int id;
4    
5    private String name;
6    
7    private IdCard idCard; 
8//省略setter、getter方法
9}
2、IdCard的POJO类:
1 public   class  IdCard  {
2    
3    private int id;
4    
5    private String cardNo;
6    
7    private Person person;
8//省略setter、getter方法
9}
3、Person的映射文件Person.hbm.xml
 1 <? xml version="1.0" ?>
 2 <! DOCTYPE hibernate-mapping PUBLIC 
 3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
 5 < hibernate-mapping >
 6      < class  name ="org.apple.hibernate.Person"  table ="t_person" >
 7          < id  name ="id" >
 8              < generator  class ="native" />
 9          </ id >
10          < property  name ="name" />
11          < many-to-one  name ="idCard"  unique ="true" />
12      </ class >
13 </ hibernate-mapping >

4、IdCard的映射文件IdCard.hbm.xml
 1 <? xml version="1.0" ?>
 2 <! DOCTYPE hibernate-mapping PUBLIC 
 3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
 5 < hibernate-mapping >
 6      < class  name ="org.apple.hibernate.IdCard"  table ="t_idcard" >
 7          < id  name ="id" >
 8              < generator  class ="native" />
 9          </ id >
10          < property  name ="cardNo" />
11          < one-to-one  name ="person"  property-ref ="idCard" />
12      </ class >
13 </ hibernate-mapping >



-------------------------------------------------------------------------------------------------
PS:本博客文章,如果没有注明是有“转”字样,属于本人原创。如果需要转载,务必注明作者文章的详细出处地址,否则不允许转载,多谢合作!

你可能感兴趣的:(系统学习hibernate之六:一对一外键关联映射双向关联)