hibernate one-to-one 一对一 关系配置

本文介绍了一个简单的数据库设计案例,包括用户基本信息表和用户详细信息表的创建,以及通过Java实体类和Hibernate映射文件实现的关联映射。此外,还展示了如何通过Hibernate保存这些实体。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 建表
  用户基本表
  CREATE TABLE `tbl_user` (                                           
            `uid` int(11) NOT NULL auto_increment COMMENT '自动增长',     
            `uname` varchar(10) NOT NULL default 'admin' COMMENT '用户名', 
            `upass` varchar(50) NOT NULL default 'admin' COMMENT '密码',    
            PRIMARY KEY  (`uid`)                                              
          ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
用户详细信息表
CREATE TABLE `tbl_detail` (               
              `did` int(11) NOT NULL,                 
              `age` varchar(50) NOT NULL default '0', 
              PRIMARY KEY  (`did`)                    
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. 配置类
  public class TblUser implements java.io.Serializable {
// Fields
private Integer uid;
private String uname;
private String upass;
private TblDetail detail;

       /** default constructor */
public TblUser() {
}

public TblDetail getDetail() {
return detail;
}

public void setDetail(TblDetail detail) {
this.detail = detail;
}


// Property accessors
        // 省略getter/setter方法

       public class TblDetail implements java.io.Serializable {

// Fields
private Integer did;
private Integer age;
private TblUser user;

/** default constructor */
public TblDetail() {
}
public TblUser getUser() {
return user;
}

public void setUser(TblUser user) {
this.user = user;
}


}

}
3. 配置映射文件

TblUser.hbm.xml

<one-to-one name="detail" class="accp.teacher.entity.TblDetail"
  cascade="all"></one-to-one>

 TblDetail.hbm.xml

<class name="TblDetail" table="tbl_detail" catalog="zf">
        <id name="did" type="java.lang.Integer" unsaved-value="0">
            <column name="did" />
            <generator class="foreign">
            	 <param name="property">user</param>
            </generator>
        </id>
        <!--  
        <property name="did" type="java.lang.Integer">
            <column name="did" not-null="true" />
        </property>
        -->
        <one-to-one name="user" class="TblUser"
        	constrained="true"></one-to-one>
        
        <property name="age" type="java.lang.Integer">
            <column name="age" not-null="false" />
        </property>
        
        
    </class>
 

4.  save

TblUser user = new TblUser();
TblDetail detail = new TblDetail();
detail.setAge(100);
user.setUname("michal"+i);
user.setUpass("pass"+i);
detail.setUser(user);
user.setDetail(detail);
session.save(user);

  经测试OK

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值