hibernate关联映射

  1. public class Group {  
  2.     private String id;  
  3.     private String name;  
  4.     …...  
  5. }  
  6. public class User{  
  7.     private String id;  
  8.     privte String name;  
  9.     private Group group;  
  10.     public Group getGroup(){return group;}  
  11.     public void setGroup(Group group){  
  12.         this.group = group;  
  13.       }  
  14.     ……  
  15. }  
在“多”方的映射文件中使用<many-to-one>元素来配置多对一关联关系。
[plain]  view plain  copy
  1. <many-to-one  
  2.         name="propertyName"                                                        
  3.         column="column_name"                                                     
  4.         class="ClassName"                                                               
  5.         cascade="all|none|save-update|delete"                             
  6.         property-ref="propertyNameFromAssociatedClass"       
  7.         not-null="true|false"                                                             
  8. />  
name:待映射的持久化类的属性名。
column:column用于指定持久化类对应的表的外键字段名。(可选)
class:关联的类的名字。 (可选)
cascade(级联):指明哪些操作会从父对象级联到关联的对象。 (可选)
property-ref:指定关联类的一个属性,这个属性将会和本外键相对应。 如果没有指定,会使用对方关联类的主键。 (可选) 

not-null:使用DDL为外键字段生成一个非空约束。(可选) 

基于主键关联的单向一对一:

[plain]  view plain  copy
  1. //Person类  
  2. public class Person {  
  3.      private int id;  
  4. …..  
  5. }  
  6. //映射文件  
  7. <class name="Person">  
  8.    <id name=“ID">  
  9.       <generator class=“native">  
  10. </generator>  
  11.     </id>  
  12.         ….  
  13. </class>  
[plain]  view plain  copy
  1. //IdCard类  
  2. public class IdCard {  
  3.      private int id;  
  4.      private Person person;  
  5. ……  
  6. }  
  7. //映射文件  
  8.  <class name="IdCard">  
  9.         <id name=“ID">  
  10.             <generator class=“foreign">  
  11.                  <param name="property"> person </param>  
  12.              </generator>  
  13.         </id>  
  14.           <one-to-one name=“person" constrained="true"/>  
  15.         ….  
  16.   
  17. </class>  

基于外键关联的单向一对一:

[plain]  view plain  copy
  1. //Person类  
  2. public class Person {  
  3.      private int id;  
  4. …..  
  5. }  
  6. //映射文件  
  7. <class name="Person">  
  8.    <id name="id">  
  9.       <generator class=“native">  
  10.       </generator>  
  11.     </id>  
  12.         ….  
  13. </class>  
[plain]  view plain  copy
  1. //IdCard类  
  2. public class IdCard {  
  3.      private int id;  
  4.      private Person person;  
  5.      ……  
  6. }  
  7. //映射文件  
  8.  <class name="IdCard">  
  9.         <id name="id">  
  10.             <generator class=“native"/>  
  11.         </id>  
  12.  <many-to-one name=“person"  column=“person_id” unique="true"/>  
  13.         ….  
  14. </class>  

一对多关联映射 (one-to-many)

[plain]  view plain  copy
  1. public class Classes {  
  2.     private String id;  
  3.     private String name;  
  4.     private Set students;  
  5.     ….}  
  6. public class Student {  
  7.     private String id;  
  8.     private String name;  
  9.        …..}  

一对多关联映射文件:

[plain]  view plain  copy
  1. <hibernate-mapping>  
  2.     <class name="Classes">  
  3.         <id name="id">  
  4.             <generator class="uuid"/>  
  5.         </id>  
  6.         <property name="name"/>  
  7.         <set name=“students”>   <!--定义一个集合-->  
  8.             <key column=“classesid” ></key> <!--指定多端的外键-->  
  9.             <one-to-many class=“Student” /> <!--指定多端对应的类-->  
  10.         </set>  
  11.     </class>  
  12. </hibernate-mapping>  

多对多关联映射  (many-to-many)

<many-to-many
        column="column_name"                               (1)
        class="ClassName"                                        (2)
/>
(1) column(必需): 中间映射表中,关联目标表的关联字段
(2) class (必需): 类名,关联目标类


<key column="column_name"/>   (1)

(1) column(必需):当前表的关联字段

[plain]  view plain  copy
  1. <class name="Student">  
  2.     <id name="id" column="userId"><generator class="native"/></id>  
  3.     <set name="trainClasses" lazy="true" cascade="save-update">  
  4.         <key column="studentId"/>  
  5.         <many-to-many class="TrainClass"             column="trainClassId"/>  
  6.     </set>  
  7. </class>  
  8. <class name="TrainClass" table="TBL_TRAIN_CLASS">  
  9.     <id name="id" column="trainClassId"><generator class="native"/></id>  
  10. </class>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值