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