Hibernate 一对多的关系

Hibernate 一对多的关系
catg table

CREATE TABLE `catg` (
  `id` int(11) NOT NULL auto_increment,
  `cname` varchar(50) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

product talbe

CREATE TABLE `product` (
  `p_id` int(11) NOT NULL auto_increment,
  `id` int(11) NOT NULL,
  `pname` varchar(50) default NULL,
  PRIMARY KEY  (`p_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Product Bean:

public class Product  implements java.io.Serializable {
     private Integer PId;
     private Catg catg;
     private String pname;
     public Product() {
     }
     public Integer getPId() {
        return this.PId;
    }
   
    public void setPId(Integer PId) {
        this.PId = PId;
    }
    public String getPname() {
        return this.pname;
    }
   
    public void setPname(String pname) {
        this.pname = pname;
    }

 public Catg getCatg() {
  return catg;
 }

 public void setCatg(Catg ca) {
  this.catg = ca;
 }
}

Catg Bean:

public class Catg  implements java.io.Serializable {
     private Integer id;
     private String cname;
     private Set products = new HashSet(0);
    public Catg() {
    }
    public Integer getId() {
        return this.id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getCname() {
        return this.cname;
    }
    public void setCname(String cname) {
        this.cname = cname;
    }
    public Set getProducts() {
        return this.products;
    }
    public void setProducts(Set products) {
        this.products = products;
    }
}

Product.hbm.xml:
<hibernate-mapping>
    <class name="com.vo.Product" table="product">
        <id name="PId" type="java.lang.Integer">
            <column name="p_id" />
            <generator class="native" />
        </id>
        <many-to-one name="catg" class="com.vo.Catg" fetch="select">
            <column name="id" not-null="true" />
        </many-to-one>
        <property name="pname" type="java.lang.String">
            <column name="pname" length="50" />
        </property>
    </class>
</hibernate-mapping>

Catg.hbm.xml:
<hibernate-mapping>
     <class name="com.vo.Catg" table="catg" catalog="lms">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native" />
        </id>
        <property name="cname" type="java.lang.String">
            <column name="cname" length="50" />
        </property>
        <set name="products" inverse="true" cascade="all">
            <key>
                <column name="id" not-null="true" />
            </key>
            <one-to-many class="com.vo.Product" />
        </set>
       </class>
</hibernate-mapping>


Test 测试文件:
public class TT {
 SessionFactory sf;
    Session session;
 
    public TT()
    {
        try
        {
            Configuration cfg = new Configuration();
            sf = cfg.configure().buildSessionFactory();
            session = sf.openSession();
        }
        catch(HibernateException ex)
        {
            ex.printStackTrace();
        }
    }
   public void addMethod(Catg ca)
   {
    Transaction t=null;
    t=session.beginTransaction();
    session.save(ca);
      t.commit();
   
   }
 public static void main(String[] args) {
  Catg ca=new Catg();
  ca.setCname("12TV");
  
  Product pro=new Product();
  pro.setPname("dd");
  pro.setCatg(ca);
  Product pro2=new Product();
  pro2.setPname("cc");
  pro2.setCatg(ca);
  ca.getProducts().add(pro);
  ca.getProducts().add(pro2);
  
  new TT().addMethod(ca);

 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值