My FAQ,最新最全的IT技术FAQ
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 未整理篇 | 技术讨论
  当前位置: > 程序开发 > 编程语言 > Java > 综合文章
Hibernate 一对一例(续)
作者:未知 时间:2005-07-27 22:45 出处:CSDN 责编:My FAQ
              摘要:Hibernate 一对一例(续)

由于采用主键关联存在一些问题。下面我们将上面的那个例子转为外键同一个主键关联。

表结构改为:
CREATE TABLE user (
  USER_ID varchar(10) NOT NULL default '',
  NAME varchar(16) NOT NULL default '',
  fk_room_id varchar(10) NOT NULL default '',
  INDEX (fk_room_id),
  FOREIGN KEY (fk_room_id) REFERENCES Room(ROOM_ID),
  PRIMARY KEY  (USER_ID)
) TYPE=INNODB;


CREATE TABLE room (
  ROOM_ID varchar(10) NOT NULL default '',
  ADDRESS varchar(32) NOT NULL default '',
  PRIMARY KEY  (ROOM_ID)
) TYPE=INNODB;

User.hbm.xml 中的:
<one-to-one name="room"
                    class="ivan.hibernate.one2one.Room"
                    cascade="all"/>
改为:
<many-to-one name="room" 
         class="ivan.hibernate.one2one.Room"
         cascade="all"
         column="fk_room_id"
         unique="true"/>

Room.hbm.xml 中的:
<id name="id" column="ROOM_ID" unsaved-value="0"> 
      <generator class="foreign"> 
           <param name="property">user</param> 
      </generator> 
</id>
改为:
<id name="id" column="ROOM_ID" unsaved-value="0">
   <generator class="increment"/> 
</id>

通过上面的改造,即完成了一对一关联从主键关联转到使用一个外键与主键关联。


 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 myfaq.com.cn All rights reserved. www.myfaq.com.cn 版权所有