Hibernate 映射关系 ---One2Many单向关联


一个商品类别下对应着多个商品,在关联关系里,就是以集合的方式关联,一般是Set集合

 

[java]  view plain copy
  1. package com.pojo;  
  2. import java.util.HashSet;  
  3. import java.util.Set;  
  4. /** 
  5.  *  
  6.  * 商品类别 
  7.  */  
  8. public class Category implements java.io.Serializable {  
  9.     private static final long serialVersionUID = 4772491895582904188L;  
  10.     private int id;  
  11.     private String name;  
  12.     private String mark;  
  13.     private Set<Product> product = new HashSet<Product>() ;  //一个商品类别有多个商品,存放在set里面  
  14.       
  15.     public Category() {  
  16.     }  
  17.     public int getId() {  
  18.         return id;  
  19.     }  
  20.     public void setId(int id) {  
  21.         this.id = id;  
  22.     }  
  23.     public String getName() {  
  24.         return this.name;  
  25.     }  
  26.     public void setName(String name) {  
  27.         this.name = name;  
  28.     }  
  29.     public String getMark() {  
  30.         return this.mark;  
  31.     }  
  32.     public void setMark(String mark) {  
  33.         this.mark = mark;  
  34.     }  
  35.     public Set<Product> getProduct() {  
  36.         return product;  
  37.     }  
  38.     public void setProduct(Set<Product> product) {  
  39.         this.product = product;  
  40.     }  
  41. }  
 

 

[java]  view plain copy
  1. package com.pojo;  
  2. /** 
  3.  *  
  4.  *  
  5.  * 商品 
  6.  */  
  7. public class Product implements java.io.Serializable {  
  8.     private static final long serialVersionUID = -4090151482387518292L;  
  9.     private int id;  
  10.     private String productname;  
  11.     private String remark;  
  12.     public Product() {  
  13.     }  
  14.     public String getProductname() {  
  15.         return this.productname;  
  16.     }  
  17.     public void setProductname(String productname) {  
  18.         this.productname = productname;  
  19.     }  
  20.     public String getRemark() {  
  21.         return this.remark;  
  22.     }  
  23.     public void setRemark(String remark) {  
  24.         this.remark = remark;  
  25.     }  
  26.     public int getId() {  
  27.         return id;  
  28.     }  
  29.     public void setId(int id) {  
  30.         this.id = id;  
  31.     }  
  32. }  

 

在XML文件里面就是配置一对多的关联了:

[xhtml]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  4. <!--  
  5.     Mapping file autogenerated by MyEclipse Persistence Tools 
  6. -->  
  7. <hibernate-mapping>  
  8.     <class name="com.pojo.Category" table="CATEGORY" schema="ZM">  
  9.         <id name="id" type="java.lang.Integer">  
  10.             <column name="ID" precision="8" scale="0" />  
  11.             <generator class="increment" />  
  12.         </id>  
  13.         <property name="name" type="java.lang.String">  
  14.             <column name="NAME" length="100" />  
  15.         </property>  
  16.         <property name="mark" type="java.lang.String">  
  17.             <column name="MARK" length="100" />  
  18.         </property>  
  19.           
  20.         <!-- 一对多关联,一种类别对应多个商品  -->  
  21.         <set name="product"  >  
  22.         <key column="PRODUCTTYPEID" foreign-key="id"></key>  
  23.         <one-to-many class="com.pojo.Product" />  
  24.         </set>  
  25.           
  26.           
  27.     </class>  
  28. </hibernate-mapping>  

 

测试类:

[java]  view plain copy
  1. package com.test;  
  2. import java.util.Set;  
  3. import org.hibernate.Session;  
  4. import com.pojo.Category;  
  5. import com.pojo.Product;  
  6. import com.util.HibernateManager;  
  7. public class Test1 {  
  8.     /** 
  9.      * beckham Dec 14, 2009 7:30:06 PM 
  10.      */  
  11.     public static void main(String[] args) {  
  12.         Test1.loadPro() ;  
  13.     }  
  14.     public static void addType() {  
  15.         Session session = HibernateManager.openSession();  
  16.         Category c = new Category();  
  17.         c.setName("电脑");  
  18.         c.setMark("这是电脑类别");  
  19.         try {  
  20.             session.save(c);  
  21.             HibernateManager.closeSession();  
  22.         } catch (Exception e) {  
  23.             e.printStackTrace();  
  24.             HibernateManager.rollbackTransaction();  
  25.         }  
  26.     }  
  27.     public static void addPro() {  
  28.         Session session = HibernateManager.openSession();  
  29.         //获取类型  
  30.         Category c = (Category) session.load(Category.classnew Integer(1));  
  31.         //商品1  
  32.         Product p = new Product();  
  33.         p.setProductname("摩托罗拉v8");  
  34.         p.setRemark("很好的手机");  
  35.         //商品2  
  36.         Product p1 = new Product();  
  37.         p1.setProductname("摩托罗拉A1200");  
  38.         p1.setRemark("非常好的手机");  
  39.           
  40.         //一对多关联  
  41.         Set<Product> set = c.getProduct() ;  
  42.         set.add(p) ;  
  43.         set.add(p1) ;  
  44.           
  45.         session.save(p) ;  
  46.         session.save(p1) ;  
  47.         try {  
  48.             session.save(p);  
  49.             HibernateManager.closeSession();  
  50.         } catch (Exception e) {  
  51.             e.printStackTrace();  
  52.             HibernateManager.rollbackTransaction();  
  53.         }  
  54.     }  
  55.       
  56.     public static void loadPro() {  
  57.         Session session = HibernateManager.openSession();  
  58.         //先获取类型  
  59.         Category c = (Category) session.load(Category.classnew Integer(1));  
  60.         System.out.println("类别编号:"+c.getId());  
  61.         System.out.println("类别名称:"+c.getName());  
  62.         System.out.println("类别描述:"+c.getMark());  
  63.           
  64.         //获取该类型下的所有商品  
  65.         Set<Product> ps = c.getProduct() ;  
  66.         for(Product p:ps){  
  67.             System.out.println("商品编号"+p.getId());  
  68.             System.out.println("商品名称:"+p.getProductname());  
  69.             System.out.println("商品描述:"+p.getRemark());  
  70.         }  
  71.         try {  
  72.             HibernateManager.closeSession();  
  73.         } catch (Exception e) {  
  74.             e.printStackTrace();  
  75.             HibernateManager.rollbackTransaction();  
  76.         }  
  77.     }  
  78. }  

 

 

测试结果:

类别编号:1
Hibernate: 
    select
        category0_.ID as ID1_0_,
        category0_.NAME as NAME1_0_,
        category0_.MARK as MARK1_0_ 
    from
        ZM.CATEGORY category0_ 
    where
        category0_.ID=?
类别名称:电脑
类别描述:这是电脑类别
Hibernate: 
    select
        product0_.PRODUCTTYPEID as PRODUCTT4_1_,
        product0_.ID as ID1_,
        product0_.ID as ID0_0_,
        product0_.PRODUCTNAME as PRODUCTN2_0_0_,
        product0_.REMARK as REMARK0_0_ 
    from
        ZM.PRODUCT product0_ 
    where
        product0_.PRODUCTTYPEID=?
商品编号3
商品名称:摩托罗拉A1200
商品描述:非常好的手机
商品编号2
商品名称:摩托罗拉v8
商品描述:很好的手机


本文出自 http://blog.csdn.net/gaowenming/article/details/5006294


猜你喜欢

转载自blog.csdn.net/qq_28059559/article/details/49979069