zoukankan      html  css  js  c++  java
  • hibernate双向一对多关联关系

    双向的多对一(一对多)关联关系:

    其实这种关联关系就是把单向的多对一和单向的一对多的关联关系的整合。

     

     

    只是说明一点:

    代码:

     

    package qau.edu.ren;

    import java.util.Date;

    import org.hibernate.Session;

    import org.hibernate.Transaction;

    import org.hibernate.cfg.Configuration;

    public class Test {

    public static void main(String[] args) {

             

             

    //               创建configuration,加载配置文件;

             

              Configuration con = new Configuration().configure();

             

    //               创建Session;

             

              Session session = con.buildSessionFactory().openSession();

             

    //               开始事务 ;

             

              Transaction tr = session.beginTransaction();

             

    //               实例化对象;

             

              Customer customer = new Customer();

             

              customer.setName("AAAAAA");

             

              Order o1 = new Order();

              Order o2 = new Order();

             

              o1.setName("aa");

              o1.setDate(new Date());

             

              o2.setName("bb");

              o2.setDate(new Date());

             

              o1.setCus(customer);

              o2.setCus(customer);

             

              customer.getOrders().add(o2);

              customer.getOrders().add(o1);

    //              

    //              

              session.save(customer);

              session.save(o2);

              session.save(o1);

             

    //              

    //              

             

    //               Customer cus = (Customer)session.get(Customer.class, 1);

    //              

    //               Set<Order> orders = cus.getOrders();

             

             

              tr.commit();

             

             

             

              session.close();

             

    }

    }

     

     

     

    下面是Customer的关系映射文件:

     

     

    <?xml version="1.0"?>

    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

     

    <hibernate-mapping package="qau.edu.ren">

     

       <class name="Customer" table="t_customer">

      

         <id name="id" column="c_id">

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

         </id>

        

         <property name="name" column="c_name"/>

        

         <set name="orders" table="t_order" inverse="true">

           <key column="c_id"/>   

           <one-to-many class="Order"/> 

         </set> 

       </class>

    </hibernate-mapping>

     

     

     

     

     

    上面的inverse属性用于控制反转,没有设置这个属性的时候,不管是怎样的save顺序,都会出现update,这是因为这是双向的关联关系,关联关系由双方记性维护。

     

    inverse<set>中的一个属性,当他的设置为true的时候,表示对方为主动方,表示关联关系由对方进行维护。

    如果没有一直坚持,也不会有质的飞跃,当生命有了限度,每个人的价值就会浮现。
  • 相关阅读:
    Java中final、finally、finalize的区别
    GC垃圾回收机制详解
    spring ioc Di
    获取不同语言版本的任务状态
    转:系统架构师-基础到企业应用架构
    转:SharePoint【Site Definition 系列】
    转:SharePoint【ECMAScript对象模型系列】
    转:SharePoint【Ribbon系列】
    SharaPoint Farm Administrator密码变换及管理员转换
    转:Programming with Features(操作Feature)
  • 原文地址:https://www.cnblogs.com/shiguangshuo/p/4083828.html
Copyright © 2011-2022 走看看