随笔-61  评论-159  文章-0  trackbacks-0

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

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

1public class Person {
2
3    private int id;
4    
5    private String name;
6    
7    private IdCard idCard; 
8//省略setter、getter方法
9}
2、IdCard的POJO类:
1public 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:本博客文章,如果没有注明是有“转”字样,属于本人原创。如果需要转载,务必注明作者文章的详细出处地址,否则不允许转载,多谢合作!
posted on 2008-10-10 21:38 apple0668 阅读(1156) 评论(1)  编辑  收藏 所属分类: hibernate

评论:
# re: 系统学习hibernate之六:一对一外键关联映射双向关联 2008-11-22 23:09 | ziscloud
兄弟真的要感谢你,就是property-ref困扰得我很难受,非常感谢你!  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: