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 
长春语林科技 阅读(316) 
评论(0)  编辑  收藏  所属分类: 
hibernate