hibernate一對一關(guān)聯(lián)有兩種方式:
1.共享主鍵:限制兩個表的主鍵使用相同的值
2.唯一外鍵:
如:通常將會員的登陸賬號和會員的詳細信息分開
3.數(shù)據(jù)表
login表:
字段名稱 |
數(shù)據(jù)類型 |
主鍵 |
自增 |
允許為空 |
描述 |
ID |
int(4) |
yes |
|
|
ID號 |
LOGINNAME |
char(20) |
|
|
yes |
登陸賬號 |
LOGINPWD |
char(20) |
|
|
yes |
登陸密碼 |
詳細信息company表:
字段名稱 |
數(shù)據(jù)類型 |
主鍵 |
自增 |
允許為空 |
描述 |
ID |
int(4) |
yes |
增1 |
|
ID號 |
COMPANGNAME |
varchar(100) |
|
|
yes |
公司名稱 |
TELPHONE |
char(20) |
|
|
yes |
聯(lián)系電話 |
EMAIL |
char(20) |
|
|
yes |
郵件 |
LINKMAN |
char(20) |
|
|
yes |
聯(lián)系人 |
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一對一關(guān)聯(lián)-->
<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" <!--主控類的所有操作,對關(guān)聯(lián)類也執(zhí)行同樣-->
lazy="false"/>
</class>
<hibernate-mapping>
posted on 2008-05-25 16:30
長春語林科技 閱讀(298)
評論(0) 編輯 收藏 所屬分類:
hibernate