hibernate一对一关联有两种方式:
1.共享主键:限制两个表的主键使用相同的值
2.唯一外键:
如:通常将会员的登陆账号和会员的详细信息分开
3.数据表
login表:
字段名称 |
数据类型 |
主键 |
自增 |
允许为空 |
描述 |
ID |
int(4) |
yes |
|
|
ID号 |
LOGINNAME |
char(20) |
|
|
yes |
登陆账号 |
LOGINPWD |
char(20) |
|
|
yes |
登陆密码 |
详细信息company表:
字段名称 |
数据类型 |
主键 |
自增 |
允许为空 |
描述 |
ID |
int(4) |
yes |
增1 |
|
ID号 |
COMPANGNAME |
varchar(100) |
|
|
yes |
公司名称 |
TELPHONE |
char(20) |
|
|
yes |
联系电话 |
EMAIL |
char(20) |
|
|
yes |
邮件 |
LINKMAN |
char(20) |
|
|
yes |
联系人 |
4.PO类
Login.java
public class Login implements Serializable{
private Integer id;
private String loginName;
private String loginPwd;
private Company company;
public Login(){
}
}
Company.java
public class Company implements Serializable{
private Integer id;
private String companyName;
private String linkMan;
private String telphone;
private String email;
private Login login;
public Company(){
}
}
6.hbm.xml
Login.hbm.xml:
<hibernate-mapping package="com.lhb.vo">
<class="Login" table="login">
<id name="id" column="id" type="integer">
<!--直接采用外键的属性值,使用foreign标识生成器,达到共享主键目的-->
<generator class="foreign">
<param name="property">company</param>
</generator>
</id>
<property name="loginName" column="LOGINNAME' type="String"/>
<property name="loginPwd" column="LOGINPWD" type="String"/>
<!--映射login与company一对一关联-->
<one-to-one name="company" class="com.lhb.Company" constrained="true"/>
</class>
</hibernate-mapping>
Company.hbm.xml:
<hibernate-mapping package="com.lhb.vo">
<class="company" table="COMPANY">
<id name="id" column="id" type="integer">
<generator class="identity"/>
</id>
<property name="companyName" type="String"/>
:
:
<one-to-one name="login" class="com.lhb.Login" cascade="all" <!--主控类的所有操作,对关联类也执行同样-->
lazy="false"/>
</class>
<hibernate-mapping>
posted on 2008-05-25 16:30
长春语林科技 阅读(295)
评论(0) 编辑 收藏 所属分类:
hibernate