一个商品类别下对应着多个商品,在关联关系里,就是以集合的方式关联,一般是Set集合
- package com.pojo;
- import java.util.HashSet;
- import java.util.Set;
- /**
- *
- * 商品类别
- */
- public class Category implements java.io.Serializable {
- private static final long serialVersionUID = 4772491895582904188L;
- private int id;
- private String name;
- private String mark;
- private Set<Product> product = new HashSet<Product>() ; //一个商品类别有多个商品,存放在set里面
- public Category() {
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getMark() {
- return this.mark;
- }
- public void setMark(String mark) {
- this.mark = mark;
- }
- public Set<Product> getProduct() {
- return product;
- }
- public void setProduct(Set<Product> product) {
- this.product = product;
- }
- }
- package com.pojo;
- /**
- *
- *
- * 商品
- */
- public class Product implements java.io.Serializable {
- private static final long serialVersionUID = -4090151482387518292L;
- private int id;
- private String productname;
- private String remark;
- public Product() {
- }
- public String getProductname() {
- return this.productname;
- }
- public void setProductname(String productname) {
- this.productname = productname;
- }
- public String getRemark() {
- return this.remark;
- }
- public void setRemark(String remark) {
- this.remark = remark;
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- }
在XML文件里面就是配置一对多的关联了:
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <!--
- Mapping file autogenerated by MyEclipse Persistence Tools
- -->
- <hibernate-mapping>
- <class name="com.pojo.Category" table="CATEGORY" schema="ZM">
- <id name="id" type="java.lang.Integer">
- <column name="ID" precision="8" scale="0" />
- <generator class="increment" />
- </id>
- <property name="name" type="java.lang.String">
- <column name="NAME" length="100" />
- </property>
- <property name="mark" type="java.lang.String">
- <column name="MARK" length="100" />
- </property>
- <!-- 一对多关联,一种类别对应多个商品 -->
- <set name="product" >
- <key column="PRODUCTTYPEID" foreign-key="id"></key>
- <one-to-many class="com.pojo.Product" />
- </set>
- </class>
- </hibernate-mapping>
测试类:
- package com.test;
- import java.util.Set;
- import org.hibernate.Session;
- import com.pojo.Category;
- import com.pojo.Product;
- import com.util.HibernateManager;
- public class Test1 {
- /**
- * beckham Dec 14, 2009 7:30:06 PM
- */
- public static void main(String[] args) {
- Test1.loadPro() ;
- }
- public static void addType() {
- Session session = HibernateManager.openSession();
- Category c = new Category();
- c.setName("电脑");
- c.setMark("这是电脑类别");
- try {
- session.save(c);
- HibernateManager.closeSession();
- } catch (Exception e) {
- e.printStackTrace();
- HibernateManager.rollbackTransaction();
- }
- }
- public static void addPro() {
- Session session = HibernateManager.openSession();
- //获取类型
- Category c = (Category) session.load(Category.class, new Integer(1));
- //商品1
- Product p = new Product();
- p.setProductname("摩托罗拉v8");
- p.setRemark("很好的手机");
- //商品2
- Product p1 = new Product();
- p1.setProductname("摩托罗拉A1200");
- p1.setRemark("非常好的手机");
- //一对多关联
- Set<Product> set = c.getProduct() ;
- set.add(p) ;
- set.add(p1) ;
- session.save(p) ;
- session.save(p1) ;
- try {
- session.save(p);
- HibernateManager.closeSession();
- } catch (Exception e) {
- e.printStackTrace();
- HibernateManager.rollbackTransaction();
- }
- }
- public static void loadPro() {
- Session session = HibernateManager.openSession();
- //先获取类型
- Category c = (Category) session.load(Category.class, new Integer(1));
- System.out.println("类别编号:"+c.getId());
- System.out.println("类别名称:"+c.getName());
- System.out.println("类别描述:"+c.getMark());
- //获取该类型下的所有商品
- Set<Product> ps = c.getProduct() ;
- for(Product p:ps){
- System.out.println("商品编号"+p.getId());
- System.out.println("商品名称:"+p.getProductname());
- System.out.println("商品描述:"+p.getRemark());
- }
- try {
- HibernateManager.closeSession();
- } catch (Exception e) {
- e.printStackTrace();
- HibernateManager.rollbackTransaction();
- }
- }
- }
测试结果:
类别编号: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.youkuaiyun.com/gaowenming/article/details/5006294