`

hibernate一对一主键关联映射(单向关联Person----->IdCard)

阅读更多

一对一关联映射原理:让两个实体的主键一样,这样就不需要加入多余的字段

例子:

 

package com.hibernate; 
 
public class IdCard { 
     
    private int id; 
     
    private String cardNo; 
set..get...省 
} 

 

package com.hibernate; 
public class Person { 
 
    private int id; 
     
    private String name; 
     
    private IdCard idCard; 
set..get...省 
} 

 

 

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC  
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
    <class name="com.hibernate.IdCard" table="t_idCard"> 
        <id name="id"> 
            <generator class="native"/> 
        </id> 
        <property name="cardNo"/> 
    </class> 
</hibernate-mapping> 

 

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC  
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
    <class name="com.hibernate.Person" table="t_person"> 
        <id name="id"> 
            <!-- 采用foreign生成策略,forgeign会取得关联对象的标识 --> 
            <generator class="foreign"> 
                <!-- property只关联对象 --> 
                <param name="property">idCard</param> 
            </generator> 
        </id> 
        <property name="name"/> 
        <!--  
            one-to-one指示hibernate如何加载其关联对象,默认根据主键加载 
            也就是拿到关系字段值,根据对端的主键来加载关联对象 
         
            constrained="true表示,当前主键(person的主键)还是一个外键 
            参照了对端的主键(IdCard的主键),也就是会生成外键约束语句 
         --> 
        <one-to-one name="idCard" constrained="true"/> 
    </class> 
</hibernate-mapping> 
 

 

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics