Hibernate 一对一共享主键关联的例子

一 表结构:

Sql代码
  1. CREATE TABLE `user`  
  2.   `userid` int(11) NOT NULL auto_increment,  
  3.   `username` varchar(255) NOT NULL default '',  
  4.   `age` int(2) default NULL,  
  5.   PRIMARY KEY  (`userid`)  
  6. ENGINE=InnoDB DEFAULT CHARSET=gbk;  
  7.   
  8.   
  9. CREATE TABLE `address`  
  10.   `aid` int(11) NOT NULL default '0',  
  11.   `address` varchar(255) NOT NULL default '',  
  12.   PRIMARY KEY  (`aid`)  
  13. ENGINE=InnoDB DEFAULT CHARSET=gbk;  
CREATE TABLE `user` ( `userid` int(11) NOT NULL auto_increment, `username` varchar(255) NOT NULL default '', `age` int(2) default NULL, PRIMARY KEY (`userid`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk; CREATE TABLE `address` ( `aid` int(11) NOT NULL default '0', `address` varchar(255) NOT NULL default '', PRIMARY KEY (`aid`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk;

 

二 POJO与映射文件:

Java代码
  1. public clas User  
  2.     private Integer userid;  
  3.     private String username;  
  4.     private Integer age;  
  5.     private Address address;  
  6. //getters setters method...  
  7.  
  8.   
  9. public class Address  
  10.     private Integer aid;  
  11.     private String address;  
  12.     private User user;  
  13. //getters setters method...  
  14.  
public class User { private Integer userid; private String username; private Integer age; private Address address; //getters setters method... } public class Address { private Integer aid; private String address; private User user; //getters setters method... }

 

Java代码
  1. User.hbm.xml  
  2.   
  3. <hibernate-mapping>  
  4.     <class name="com.pojo.User" table="user" dynamic-insert="true"  
  5.         dynamic-update="true">  
  6.         <id name="userid" type="integer">  
  7.             <column name="userid" sql-type="int" length="11"></column>  
  8.             <generator class="native"></generator>  
  9.         </id>  
  10.         <property name="username" type="string">  
  11.             <column name="username" sql-type="varchar" length="255"  
  12.                 not-null="true">  
  13.             </column>  
  14.         </property>  
  15.         <property name="age" type="integer">  
  16.             <column name="age" sql-type="int" length="2"></column>  
  17.         </property>  
  18.         <strong><one-to-one name="address" class="com.pojo.Address"  
  19.             cascade="all">  
  20.         </one-to-one></strong>  
  21.     </class>  
  22. </hibernate-mapping>  
User.hbm.xml <hibernate-mapping> <class name="com.pojo.User" table="user" dynamic-insert="true" dynamic-update="true"> <id name="userid" type="integer"> <column name="userid" sql-type="int" length="11"></column> <generator class="native"></generator> </id> <property name="username" type="string"> <column name="username" sql-type="varchar" length="255" not-null="true"> </column> </property> <property name="age" type="integer"> <column name="age" sql-type="int" length="2"></column> </property> <one-to-one name="address" class="com.pojo.Address" cascade="all"> </one-to-one> </class> </hibernate-mapping>

 

Java代码
  1. Address.hbm.xml  
  2.   
  3. <hibernate-mapping>  
  4.     <class name="com.pojo.Address" table="address" dynamic-insert="true" dynamic-update="true">  
  5.         <id name="aid" type="integer">  
  6.             <column name="aid" sql-type="int" length="11"></column>  
  7.             <strong><generator class="foreign">  
  8.                 <param name="property">user</param>  
  9.             </generator></strong>  
  10.         </id>  
  11.         <property name="address" type="string">  
  12.             <column name="address" sql-type="varchar" length="255"></column>  
  13.         </property>  
  14.         <strong><one-to-one name="user" class="com.pojo.User"  
  15.             constrained="true" cascade="all">  
  16.         </one-to-one></strong>  
  17.     </class>  
  18. </hibernate-mapping>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值