单向 personàidcard

主键关联:两个实体对象的id保持相同,避免多余的字段被创建

具体映射:

Person.hbm.xml

<hibernate-mapping >

    <class name="com.bjsxt.hibernate.Person" table="t_person" ><!--默认存的表和实体类的名字一样  -->

       <id name="id"> <!--标识  -->

           <generator class="foreign">

              <param name="property">idcard</param>

           </generator><!—person的主键来源于idcard  -->

       </id>

       <property name="name"></property>

       <one-to-one name="idcard" constrained="true"></one-to-one>

       <!—指示怎么加载引用对象,默认根据主键,约束为trueperson中的id作为外键参照了idcardid ,默认做了cascade --> //只有一对一主键关联默认cascade

    </class>  

</hibernate-mapping>

 

双向idcard 持有person的引用

需要在idcard映射文件中加入      <one-to-one name="person"></one-to-one>

 

 

 

一对一映射采用外键

唯一外键,单向personàidcard (多对一的特例)

采用many-to-one 指定多的一端的uniquetrue

 

Person.hbm.xml   

<class name="com.bjsxt.hibernate.Person" table="t_person" >

       <id name="id"> <!--标识  -->

           <generator class="native"></generator>

       </id>

       <property name="name"></property>

        <many-to-one name="idcard" unique="true"></many-to-one>

指示hibernate如何加载外键

 

    </class>

唯一外键 双向:

IdCard.hbm.xml    

指示hibernate如何加载关联对象,默认根据主键加载person,因为外键关联映射,

因为两个实体采用的是person的外键维护关系,所以不能指定主键加载person,而要根据person的外键加载,所以采用如下映射:

<one-to-one name="person" property-ref="idcard"></one-to-one>

 

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3