主题: hibernate 一对一配置文件问题
问题分数:100      收藏
  • zhaolina 我现在不在线,你找我吗?
  • 显示默认头像
  • 昵称:zhaolina
  • 专家等级:学员
  • 专家分:505
  • 可用分等级:短工
  • 精华:0
  • 帖子数:209
  • 结帖率: 28%
  • 注册时间:2010-01-15 15:14:44
发表于 2010-03-12 11:08:12
楼主

 hibernate 一对一配置文件问题

      [关键字: hibernate 一对一配置文件问题]

Hibernate中一对一的配置有两种实现方式一是<many-to-one  unique=”true”/>,另一种及时
<one-to-one/>
,可是这两种配置方式该如何理解呢,有什么区别和联系呢?帮忙解释一下!

下面有这样的一段代码:

 

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
Person.hbm.xml
<hibernate-mapping package="day03">
                <class name="Person" table="person_uniquepk">
                <id name="id" column="id" type="integer">
                        <generator class="identity"/>
                </id>
                <property name="name" column="name" type="string"/>
                <many-to-one  name="address" column="addressid"  class="Address" cascade="all" unique="true"/>
               
        </class>
</hibernate-mapping>
Address.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="day03">
                <class name="Address" table="address_qniquepk">
                <id name="id" column="id" type="integer">
                        <generator class="identity"/>
                </id>
                <property name="province"/>
                <property name="zipcode" />
                <one-to-one name="person" class="Person" property-ref="address"/>
               
        </class>
</hibernate-mapping>

<many-to-one  name="address" column="addressid"  class="Address" cascade="all" unique="true"/>
<one-to-one name="person" class="Person" property-ref="address"/>
这两句话怎么理解? 帮忙解释一下通过这句话怎么能,看出与数据库中表的对应关系?


  • java爱好者 我现在不在线,你找我吗?
  • 显示默认头像
  • 昵称:java爱好者
  • 专家等级:新手上路
  • 专家分:495
  • 可用分等级:贫农
  • 精华:0
  • 帖子数:183
  • 结帖率: 46%
  • 注册时间:2010-01-15 17:29:12
发表于 2010-03-12 14:32:13
第 1 楼

 回复:hibernate 一对一配置文件问题

我的理解是:addressPerson中的第三个属性,也是属性之一,但相对应其它属性的XML表示方法不一样。

 

addressAddress类中 的对象,那么要把addressAddress类中的信息关联,我们就再添加一个外键叫addressid

 

为了做到唯一性我们让 unique=true。相应的Address类中的属性person也要与Person的数据相关联,而Person类中

 

设置了外键,所以直接把 Address类中的person属性指向这个外键。不知道这样解释可以吗?


  • 415244991 我现在不在线,你找我吗?
  • 显示默认头像
  • 昵称:415244991
  • 专家等级:初级程序员
  • 专家分:1028
  • 可用分等级:佃户
  • 精华:0
  • 帖子数:268
  • 结帖率: 79%
  • 注册时间:2009-12-07 15:05:41
发表于 2010-03-12 15:27:47
第 2 楼

 回复:hibernate 一对一配置文件问题

如果你细心,你就会发现<property name=" name"  column="name" type="string"/>
同理,Person类中的属性address也是他的属性之一,那么address字段也要有对应的name=?,column=?。我是这样想 的,address在这里定义了column名并不表示它就是外键了,使它真正成为外键的原因是<one-to-one name<one="person" class="Person" property-ref="address"/>指向了address才使它成为了外键,观察发现:<one-to-one name="person" class="Person" property-ref="address"/>这句话并没有column名,因为它直接指向了address字段了。


快速回复主题
您还未登录,不能回复帖子
phome.asia   程序员之家论坛
程序员之家 版权所有 Copyright 2004-2009 All Rights Reserved©2009 京 ICP 备 05027197 号 网站地图 关于我们 联系我们