请问如何在myeclipse中进行one to one的配置 我建了半天不是关联不起来,就是one to many的,请问有选择配成one to one的吗?向大家请教。

解决方案 »

  1.   

        one to one 的有两种形式的,一种是共享主键,一种是独立外键.
        比如User和Account是一对一的关系,若将外键加到User表,Account表为主表,User表为辅表
        1).共享主键方法名方式:主外键是一样的,在主表方写<one-to-one name="关联属性"/>
          辅表方写:<one-to-one name="关联属性",constrained="false">,还要注意辅表的主健生成方式必需该为foreign 
              即: <id name="oid" column="OID" >
                    <generator class="foreign">
                       <param name="property">addr</param>
                    </generator>
                 </id>
        2).独立外键:主外键不一样,
            在主表方写
                       <one-to-one name="owner" 
             property-ref="acct" /> 
            在辅表方写  <many-to-one name="关联属性"  column="字段名"  unique="true"/>
      

  2.   

    如樓上所說有兩種形式:一是共享主键的形式进行关联,二就是独立外键的形式进行关联:
    例如:人(Person)和护照(Passwort)的关系是一对一的的关系:
         1)共享主键的形式:
            1)主表映射文件的写法:
                  <class name="Person" table="t_person">
       <id name="id" column="p_id">
       <generator class="increment"></generator>
       </id>
       <property name="name" column="p_name" type="string"></property>
    <property name="birthday" column="p_birthday" type="date"></property>
    <property name="email" column="email" type="string"></property>
    <property name="phone" column="phone" type="string"></property>
    <one-to-one name="passport" cascade="all"></one-to-one>
               </class>              2)辅表映射文件的写法:
                      <class  name="Passport" table="t_passport">
       <id name="id" column="p_id">
       <generator class="foreign">
       <param name="property">person</param> //person为Passport中的关系属性
       </generator>
       </id>
       <property name="serial" column="p_serial" type="string"></property>
    <property name="expiry" column="p_expiry" type="integer"></property>
    <property name="date" column="p_date" type="date"></property>
    <one-to-one name="person" constrained="true" cascade="all">
    </one-to-one>
                    </class>               
         2)独立外键的关联方式:
               1)主表映射文件的写法:
                  <class name="Person" table="t_person">
       <id name="id" column="p_id">
       <generator class="increment"></generator>
       </id>
       <property name="name" column="p_name" type="string"></property>
    <property name="birthday" column="p_birthday" type="date"></property>
    <property name="email" column="email" type="string"></property>
    <property name="phone" column="phone" type="string"></property>
    <one-to-one name="passport" property-ref="person" cascade="all"></one-to-one> //person为 
               实体类Passwort中的关系属性。
               </class>              2)辅表映射文件的写法:
                      <class  name="Passport" table="t_passport">
       <id name="id" column="p_id">
       <generator class="increment">  
       </generator>
       </id>
       <property name="serial" column="p_serial" type="string"></property>
    <property name="expiry" column="p_expiry" type="integer"></property>
    <property name="date" column="p_date" type="date"></property>
    <one-to-one name="person" column="pss_id" cascade="all">//pss_id为外键列
    </one-to-one>
                    </class>如有错请指正!谢谢!!!
                     
                   
              
      

  3.   

    我改了配置文件还是不知道怎么把myeclipse中的一对多改成单对单的,有没视频给个能教我怎么建单对单的,请大家帮忙
      

  4.   

    改一 改:  
    2)独立外键的关联方式: 
              1)主表映射文件的写法: 
                  <class name="Person" table="t_person"> 
      <id name="id" column="p_id"> 
      <generator class="increment"> </generator> 
      </id> 
      <property name="name" column="p_name" type="string"> </property> 
    <property name="birthday" column="p_birthday" type="date"> </property> 
    <property name="email" column="email" type="string"> </property> 
    <property name="phone" column="phone" type="string"> </property> 
    <one-to-one name="passport" property-ref="person" cascade="all"> </one-to-one> //person为 
              实体类Passwort中的关系属性。 
              </class>               2)辅表映射文件的写法: 
                      <class  name="Passport" table="t_passport"> 
      <id name="id" column="p_id"> 
      <generator class="increment">  
      </generator> 
      </id> 
      <property name="serial" column="p_serial" type="string"> </property> 
    <property name="expiry" column="p_expiry" type="integer"> </property> 
    <property name="date" column="p_date" type="date"> </property> 
    <many-to-one unique="true" name="person" column="pss_id">//pss_id为外键列 
    </one-to-one> 
                    </class> 
      

  5.   

    一對多:
    部門(Department)和員工(Employee)的關系。
         1)Department的映射文件配置:
           <class name="Department" table="t_department">
             <id name="id" column="d_id">
               <generator class="increment"></generator>
             </id>
        
           ................
           <set name="employees" inverse="true" cascade="save-update">  //employees是Department中的关系属性。
            <key column="dept_id"></key>    //外键列          
             <one-to-many class="Employee"/>  //关联实体
           </set>
           </class>
         2)Employee的映射文件配置:
           <class name="Employee" table="t_employee">
            <id name="id" column="e_id">
              <generator class="increment"></generator>
             ..................
            
           <many-to-one class="department" column="dept_id"></many-to-one>  //department为Employee实体中的关系属性。
      

  6.   

    通过Hibernate Reverse Engineering生成po,怎么能自动设置one-to-one的关系的,有没有其他工具能生成hibernate3的pojo的