zoukankan      html  css  js  c++  java
  • Hibernate(六):映射一对多关联关系、双向一对多映射

    在领域模型中,类与类之间最普通的关系就是关联关系。

    在UML中,关联是有方向的:

      例如:Customer与Order,一个用户能发出多个订单,而一个订单只能属于一个用户。

    • 单向关联

      1)从Order到Customer的关联是多对一关联;

    定义Customer:

     1 package com.dx.hibernate.onetomany;
     2 
     3 public class Customer {
     4     private Integer customerId;
     5     private String customerName;
     6 
     7     public Customer() {
     8     }
     9 
    10     public Customer(String customerName) {
    11         super();
    12         this.customerName = customerName;
    13     }
    14 
    15     public Integer getCustomerId() {
    16         return customerId;
    17     }
    18 
    19     public void setCustomerId(Integer customerId) {
    20         this.customerId = customerId;
    21     }
    22 
    23     public String getCustomerName() {
    24         return customerName;
    25     }
    26 
    27     public void setCustomerName(String customerName) {
    28         this.customerName = customerName;
    29     }
    30 }
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- Generated 2017-5-24 12:02:56 by Hibernate Tools 3.5.0.Final -->
    <hibernate-mapping>
        <class name="com.dx.hibernate.onetomany.Customer" table="CUSTOMER">
            <id name="customerId" type="java.lang.Integer">
                <column name="CUSTOMER_ID" />
                <generator class="native" />
            </id>
            <property name="customerName" type="java.lang.String">
                <column name="CUSTOMER_NAME" />
            </property>
        </class>
    </hibernate-mapping>

    定义Order:

    package com.dx.hibernate.onetomany;
    
    public class Order {
        private Integer orderId;
        private String orderName;
        private Customer customer;
    
        public Integer getOrderId() {
            return orderId;
        }
    
        public void setOrderId(Integer orderId) {
            this.orderId = orderId;
        }
    
        public String getOrderName() {
            return orderName;
        }
    
        public void setOrderName(String orderName) {
            this.orderName = orderName;
        }
    
        public Customer getCustomer() {
            return customer;
        }
    
        public void setCustomer(Customer customer) {
            this.customer = 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">
    <!-- Generated 2017-5-24 12:02:56 by Hibernate Tools 3.5.0.Final -->
    <hibernate-mapping>
        <class name="com.dx.hibernate.onetomany.Order" table="ORDERS">
            <id name="orderId" type="java.lang.Integer">
                <column name="ORDER_ID" />
                <generator class="assigned" />
            </id>
            <property name="orderName" type="java.lang.String">
                <column name="ORDER_NAME" />
            </property>
            <many-to-one name="customer" class="com.dx.hibernate.onetomany.Customer">
                <column name="CUSTOMER_ID" />
            </many-to-one>
        </class>
    </hibernate-mapping>

    初始化项目时,生成sql语句:

    Hibernate: 
    
    create table CUSTOMER (
      CUSTOMER_ID integer not null auto_increment,
      CUSTOMER_NAME varchar(255),
      primary key (CUSTOMER_ID)
    ) engine=InnoDB
    Hibernate: 
    
    create table ORDERS (
      ORDER_ID integer not null auto_increment,
      ORDER_NAME varchar(255),
      CUSTOMER_ID integer,
      primary key (ORDER_ID)
    ) engine=InnoDB
    Hibernate: 
    
    alter table ORDERS 
    add constraint FKkdbly1ij6f4kqh378kfne6ilx 
    foreign key (CUSTOMER_ID) 
    references CUSTOMER (CUSTOMER_ID)

    测试代码1:

    package com.dx.hibernate.onetomany;
    
    import static org.junit.Assert.fail;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.boot.Metadata;
    import org.hibernate.boot.MetadataSources;
    import org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl;
    import org.hibernate.boot.registry.StandardServiceRegistry;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    
    public class TestMain {
        private SessionFactory sessionFactory = null;
        private Session session = null;
        private Transaction transaction = null;
    
        @Before
        public void init() {
            StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().configure().build();
            Metadata metadata = new MetadataSources(standardRegistry).getMetadataBuilder().applyImplicitNamingStrategy(ImplicitNamingStrategyComponentPathImpl.INSTANCE).build();
    
            sessionFactory = metadata.getSessionFactoryBuilder().build();
            session = sessionFactory.getCurrentSession();
            transaction = session.beginTransaction();
        }
    
        @Test
        public void test() {
            Customer customer = new Customer("customer1");
            Order order1 = new Order("order1", customer);
            Order order2 = new Order("order2", customer);
    
            session.save(customer);
            session.save(order1);
            session.save(order2);
        }
    
        @After
        public void destory() {
            transaction.commit();
            session.close();
            sessionFactory.close();
        }
    }

    测试执行sql:

    Hibernate: 
        insert 
        into
            CUSTOMER
            (CUSTOMER_NAME) 
        values
            (?)
    Hibernate: 
        insert 
        into
            ORDERS
            (ORDER_NAME, CUSTOMER_ID) 
        values
            (?, ?)
    Hibernate: 
        insert 
        into
            ORDERS
            (ORDER_NAME, CUSTOMER_ID) 
        values
            (?, ?)

    测试代码2:

        @Test
        public void test() {
            Order order = (Order) session.get(Order.class, 1);
            
            System.out.println(order.getOrderName());
            System.out.println(order.getCustomer().getCustomerName());
        }

    测试结果:

    测试通过,且查询语句为:

    Hibernate: 
        select
            order0_.ORDER_ID as ORDER_ID1_1_0_,
            order0_.ORDER_NAME as ORDER_NA2_1_0_,
            order0_.CUSTOMER_ID as CUSTOMER3_1_0_ 
        from
            ORDERS order0_ 
        where
            order0_.ORDER_ID=?
    order1
    Hibernate: 
        select
            customer0_.CUSTOMER_ID as CUSTOMER1_0_0_,
            customer0_.CUSTOMER_NAME as CUSTOMER2_0_0_ 
        from
            CUSTOMER customer0_ 
        where
            customer0_.CUSTOMER_ID=?
    customer1

    测试代码3:

        @Test
        public void test() {
            Order order = (Order) session.get(Order.class, 1);
            
            System.out.println(order.getOrderName());
            //System.out.println(order.getCustomer().getCustomerName());
            
            session.close();
    
            System.out.println(order.getCustomer().getCustomerName());
        }

    测试结果不通过,执行sql语句:

    Hibernate: 
        select
            order0_.ORDER_ID as ORDER_ID1_1_0_,
            order0_.ORDER_NAME as ORDER_NA2_1_0_,
            order0_.CUSTOMER_ID as CUSTOMER3_1_0_ 
        from
            ORDERS order0_ 
        where
            order0_.ORDER_ID=?
    order1

    测试4:

    修改Order.hbm.xml

            <many-to-one name="customer" class="com.dx.hibernate.onetomany.Customer" fetch="join">
                <column name="CUSTOMER_ID" />
            </many-to-one>

    测试代码:

             Order order = (Order) session.get(Order.class, 1);
            
             System.out.println(order.getOrderName());
             System.out.println(order.getCustomer().getCustomerName());

    测试通过,打印的sql语句:

    Hibernate: 
        select
            order0_.ORDER_ID as ORDER_ID1_1_0_,
            order0_.ORDER_NAME as ORDER_NA2_1_0_,
            order0_.CUSTOMER_ID as CUSTOMER3_1_0_,
            customer1_.CUSTOMER_ID as CUSTOMER1_0_1_,
            customer1_.CUSTOMER_NAME as CUSTOMER2_0_1_ 
        from
            ORDERS order0_ 
        left outer join
            CUSTOMER customer1_ 
                on order0_.CUSTOMER_ID=customer1_.CUSTOMER_ID 
        where
            order0_.ORDER_ID=?

    测试代码5:

    修改Order.hbm.xml

            <many-to-one name="customer" class="com.dx.hibernate.onetomany.Customer" fetch="join">
                <column name="CUSTOMER_ID" />
            </many-to-one>

    测试代码:

             Order order = (Order) session.get(Order.class, 1);
            
             System.out.println(order.getOrderName());
             System.out.println(order.getCustomer().getCustomerName());
            
             session.close();
            
             System.out.println(order.getCustomer().getCustomerName());

    测试不通过。

      2)从Customer到Order的关联是一对多关联。

     Order.java

     1 package com.dx.hibernate.onetomany;
     2 
     3 public class Order {
     4     private Integer orderId;
     5     private String orderName;
     6 
     7     public Order() {
     8         super();
     9     }
    10 
    11     public Order(String orderName) {
    12         super();
    13         this.orderName = orderName;
    14     }
    15 
    16     public Integer getOrderId() {
    17         return orderId;
    18     }
    19 
    20     public void setOrderId(Integer orderId) {
    21         this.orderId = orderId;
    22     }
    23 
    24     public String getOrderName() {
    25         return orderName;
    26     }
    27 
    28     public void setOrderName(String orderName) {
    29         this.orderName = orderName;
    30     }
    31 
    32 }
    View Code

    Order.hbm.xml

     1 <?xml version="1.0"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     4 <!-- Generated 2017-5-25 22:09:21 by Hibernate Tools 3.5.0.Final -->
     5 <hibernate-mapping>
     6     <class name="com.dx.hibernate.onetomany.Order" table="ORDERS">
     7         <id name="orderId" type="java.lang.Integer">
     8             <column name="ORDER_ID" />
     9             <generator class="native" />
    10         </id>
    11         <property name="orderName" type="java.lang.String">
    12             <column name="ORDER_NAME" />
    13         </property>
    14     </class>
    15 </hibernate-mapping>
    View Code

    Customer.java

     1 package com.dx.hibernate.onetomany;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 
     6 public class Customer {
     7     private Integer customerId;
     8     private String customerName;
     9     private List<Order> orders = new ArrayList<Order>();
    10 
    11     public Customer() {
    12     }
    13 
    14     public Customer(String customerName) {
    15         super();
    16         this.customerName = customerName;
    17     }
    18 
    19     public Integer getCustomerId() {
    20         return customerId;
    21     }
    22 
    23     public void setCustomerId(Integer customerId) {
    24         this.customerId = customerId;
    25     }
    26 
    27     public String getCustomerName() {
    28         return customerName;
    29     }
    30 
    31     public void setCustomerName(String customerName) {
    32         this.customerName = customerName;
    33     }
    34 
    35     public List<Order> getOrders() {
    36         return orders;
    37     }
    38 
    39     public void setOrders(List<Order> orders) {
    40         this.orders = orders;
    41     }
    42 }
    View Code

    Customer.hbm.xml

     1 <?xml version="1.0"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     4 <!-- Generated 2017-5-25 22:09:21 by Hibernate Tools 3.5.0.Final -->
     5 <hibernate-mapping>
     6     <class name="com.dx.hibernate.onetomany.Customer" table="CUSTOMER">
     7         <id name="customerId" type="java.lang.Integer">
     8             <column name="CUSTOMER_ID" />
     9             <generator class="native" />
    10         </id>
    11         <property name="customerName" type="java.lang.String">
    12             <column name="CUSTOMER_NAME" />
    13         </property>
    14         <list name="orders" inverse="false" table="ORDERS" lazy="true">
    15             <key>
    16                 <column name="CUSTOMER_ID" />
    17             </key>
    18             <list-index></list-index>
    19             <one-to-many class="com.dx.hibernate.onetomany.Order" />
    20         </list>
    21     </class>
    22 </hibernate-mapping>

    TestMain.java

    package com.dx.hibernate.onetomany;
    
    import static org.junit.Assert.fail;
    
    import java.util.List;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.boot.Metadata;
    import org.hibernate.boot.MetadataSources;
    import org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl;
    import org.hibernate.boot.registry.StandardServiceRegistry;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    import org.hibernate.query.Query;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    
    public class TestMain {
        private SessionFactory sessionFactory = null;
        private Session session = null;
        private Transaction transaction = null;
    
        @Before
        public void init() {
            StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().configure().build();
            Metadata metadata = new MetadataSources(standardRegistry).getMetadataBuilder().applyImplicitNamingStrategy(ImplicitNamingStrategyComponentPathImpl.INSTANCE).build();
    
            sessionFactory = metadata.getSessionFactoryBuilder().build();
            session = sessionFactory.getCurrentSession();
            transaction = session.beginTransaction();
        }
    
        @SuppressWarnings("deprecation")
        @Test
        public void test() {
             Order order1 = new Order("order1");
             Order order2 = new Order("order2");
             Customer customer = new Customer("customer1");
             customer.getOrders().add(order1);
             customer.getOrders().add(order2);
            
             session.save(customer);
             session.save(order1);
             session.save(order2);
    
            Customer customerFetch = (Customer) session.get(Customer.class, 1);
    
            System.out.println(customerFetch.getCustomerName());
            System.out.println(customerFetch.getOrders().size());
    
        }
    
        @After
        public void destory() {
            transaction.commit();
            session.close();
            sessionFactory.close();
        }
    }

    测试结果:通过,打印信息如下:

    INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@320e400] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.
    Hibernate: 
        
        create table CUSTOMER (
           CUSTOMER_ID integer not null auto_increment,
            CUSTOMER_NAME varchar(255),
            primary key (CUSTOMER_ID)
        ) engine=InnoDB
    Hibernate: 
        
        create table ORDERS (
           ORDER_ID integer not null auto_increment,
            ORDER_NAME varchar(255),
            CUSTOMER_ID integer,
            orders_ORDER integer,
            primary key (ORDER_ID)
        ) engine=InnoDB
    Hibernate: 
        
        alter table ORDERS 
           add constraint FKkdbly1ij6f4kqh378kfne6ilx 
           foreign key (CUSTOMER_ID) 
           references CUSTOMER (CUSTOMER_ID)
    Hibernate: 
        insert 
        into
            CUSTOMER
            (CUSTOMER_NAME) 
        values
            (?)
    Hibernate: 
        insert 
        into
            ORDERS
            (ORDER_NAME) 
        values
            (?)
    Hibernate: 
        insert 
        into
            ORDERS
            (ORDER_NAME) 
        values
            (?)
    customer1
    2
    Hibernate: 
        update
            ORDERS 
        set
            CUSTOMER_ID=?,
            orders_ORDER=? 
        where
            ORDER_ID=?
    Hibernate: 
        update
            ORDERS 
        set
            CUSTOMER_ID=?,
            orders_ORDER=? 
        where
            ORDER_ID=?
    • 双向关联

    Order.java

     1 package com.dx.hibernate.onetomany;
     2 
     3 public class Order {
     4     private Integer orderId;
     5     private String orderName;
     6     private Customer customer;
     7 
     8     public Order() {
     9         super();
    10     }
    11 
    12     public Order(String orderName) {
    13         super();
    14         this.orderName = orderName;
    15     }
    16 
    17     public Integer getOrderId() {
    18         return orderId;
    19     }
    20 
    21     public void setOrderId(Integer orderId) {
    22         this.orderId = orderId;
    23     }
    24 
    25     public String getOrderName() {
    26         return orderName;
    27     }
    28 
    29     public void setOrderName(String orderName) {
    30         this.orderName = orderName;
    31     }
    32 
    33     public Customer getCustomer() {
    34         return customer;
    35     }
    36 
    37     public void setCustomer(Customer customer) {
    38         this.customer = customer;
    39     }
    40 
    41 }
    View Code

    Order.hbm.xml

     1 <?xml version="1.0"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     4 <!-- Generated 2017-5-25 22:09:21 by Hibernate Tools 3.5.0.Final -->
     5 <hibernate-mapping>
     6     <class name="com.dx.hibernate.onetomany.Order" table="ORDERS">
     7         <id name="orderId" type="java.lang.Integer">
     8             <column name="ORDER_ID" />
     9             <generator class="native" />
    10         </id>
    11         <property name="orderName" type="java.lang.String">
    12             <column name="ORDER_NAME" />
    13         </property>
    14         <many-to-one name="customer" class="com.dx.hibernate.onetomany.Customer" lazy="proxy">
    15             <column name="CUSTOMER_ID"></column>
    16         </many-to-one>
    17     </class>
    18 </hibernate-mapping>
    View Code

    Customer.java

     1 package com.dx.hibernate.onetomany;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 
     6 public class Customer {
     7     private Integer customerId;
     8     private String customerName;
     9     private List<Order> orders = new ArrayList<Order>();
    10 
    11     public Customer() {
    12     }
    13 
    14     public Customer(String customerName) {
    15         super();
    16         this.customerName = customerName;
    17     }
    18 
    19     public Integer getCustomerId() {
    20         return customerId;
    21     }
    22 
    23     public void setCustomerId(Integer customerId) {
    24         this.customerId = customerId;
    25     }
    26 
    27     public String getCustomerName() {
    28         return customerName;
    29     }
    30 
    31     public void setCustomerName(String customerName) {
    32         this.customerName = customerName;
    33     }
    34 
    35     public List<Order> getOrders() {
    36         return orders;
    37     }
    38 
    39     public void setOrders(List<Order> orders) {
    40         this.orders = orders;
    41     }
    42 }
    View Code

    Customer.hbm.xml

     1 <?xml version="1.0"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     4 <!-- Generated 2017-5-25 22:09:21 by Hibernate Tools 3.5.0.Final -->
     5 <hibernate-mapping>
     6     <class name="com.dx.hibernate.onetomany.Customer" table="CUSTOMER">
     7         <id name="customerId" type="java.lang.Integer">
     8             <column name="CUSTOMER_ID" />
     9             <generator class="native" />
    10         </id>
    11         <property name="customerName" type="java.lang.String">
    12             <column name="CUSTOMER_NAME" />
    13         </property>
    14         <list name="orders" inverse="false" table="ORDERS" lazy="true">
    15             <key>
    16                 <column name="CUSTOMER_ID" />
    17             </key>
    18             <list-index></list-index>
    19             <one-to-many class="com.dx.hibernate.onetomany.Order" />
    20         </list>
    21     </class>
    22 </hibernate-mapping>
    View Code

    测试1

     1 package com.dx.hibernate.onetomany;
     2 
     3 import static org.junit.Assert.fail;
     4 
     5 import java.util.List;
     6 
     7 import org.hibernate.Session;
     8 import org.hibernate.SessionFactory;
     9 import org.hibernate.Transaction;
    10 import org.hibernate.boot.Metadata;
    11 import org.hibernate.boot.MetadataSources;
    12 import org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl;
    13 import org.hibernate.boot.registry.StandardServiceRegistry;
    14 import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    15 import org.hibernate.query.Query;
    16 import org.junit.After;
    17 import org.junit.Before;
    18 import org.junit.Test;
    19 
    20 public class TestMain {
    21     private SessionFactory sessionFactory = null;
    22     private Session session = null;
    23     private Transaction transaction = null;
    24 
    25     @Before
    26     public void init() {
    27         StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().configure().build();
    28         Metadata metadata = new MetadataSources(standardRegistry).getMetadataBuilder().applyImplicitNamingStrategy(ImplicitNamingStrategyComponentPathImpl.INSTANCE).build();
    29 
    30         sessionFactory = metadata.getSessionFactoryBuilder().build();
    31         session = sessionFactory.getCurrentSession();
    32         transaction = session.beginTransaction();
    33     }
    34 
    35     @SuppressWarnings("deprecation")
    36     @Test
    37     public void test() {
    38          Order order1 = new Order("order1");
    39          Order order2 = new Order("order2");
    40          Customer customer = new Customer("customer1");
    41          customer.getOrders().add(order1);
    42          customer.getOrders().add(order2);
    43         
    44          session.save(customer);
    45          session.save(order1);
    46          session.save(order2);
    47 
    48         Customer customerFetch = (Customer) session.get(Customer.class, 1);
    49 
    50         System.out.println(customerFetch.getCustomerName());
    51         System.out.println(customerFetch.getOrders().size());
    52 
    53     }
    54 
    55     @After
    56     public void destory() {
    57         transaction.commit();
    58         session.close();
    59         sessionFactory.close();
    60     }
    61 }
    View Code

    测试打印信息:

    Hibernate: 
        
        create table CUSTOMER (
           CUSTOMER_ID integer not null auto_increment,
            CUSTOMER_NAME varchar(255),
            primary key (CUSTOMER_ID)
        ) engine=InnoDB
    Hibernate: 
        
        create table ORDERS (
           ORDER_ID integer not null auto_increment,
            ORDER_NAME varchar(255),
            CUSTOMER_ID integer,
            orders_ORDER integer,
            primary key (ORDER_ID)
        ) engine=InnoDB
    Hibernate: 
        
        alter table ORDERS 
           add constraint FKkdbly1ij6f4kqh378kfne6ilx 
           foreign key (CUSTOMER_ID) 
           references CUSTOMER (CUSTOMER_ID)
    Hibernate: 
        insert 
        into
            CUSTOMER
            (CUSTOMER_NAME) 
        values
            (?)
    Hibernate: 
        insert 
        into
            ORDERS
            (ORDER_NAME, CUSTOMER_ID) 
        values
            (?, ?)
    Hibernate: 
        insert 
        into
            ORDERS
            (ORDER_NAME, CUSTOMER_ID) 
        values
            (?, ?)
    customer1
    2
    Hibernate: 
        update
            ORDERS 
        set
            CUSTOMER_ID=?,
            orders_ORDER=? 
        where
            ORDER_ID=?
    Hibernate: 
        update
            ORDERS 
        set
            CUSTOMER_ID=?,
            orders_ORDER=? 
        where
            ORDER_ID=?

    测试2:

        @Test
        public void testUpdate(){
            Customer customerFetch = (Customer) session.get(Customer.class, 1);
            customerFetch.getOrders().listIterator().next().setOrderName("ABC");
        }

    测试输出:

    Hibernate: 
        select
            customer0_.CUSTOMER_ID as CUSTOMER1_0_0_,
            customer0_.CUSTOMER_NAME as CUSTOMER2_0_0_ 
        from
            CUSTOMER customer0_ 
        where
            customer0_.CUSTOMER_ID=?
    Hibernate: 
        select
            orders0_.CUSTOMER_ID as CUSTOMER3_1_0_,
            orders0_.ORDER_ID as ORDER_ID1_1_0_,
            orders0_.orders_ORDER as orders_O4_0_,
            orders0_.ORDER_ID as ORDER_ID1_1_1_,
            orders0_.ORDER_NAME as ORDER_NA2_1_1_,
            orders0_.CUSTOMER_ID as CUSTOMER3_1_1_ 
        from
            ORDERS orders0_ 
        where
            orders0_.CUSTOMER_ID=?
    Hibernate: 
        update
            ORDERS 
        set
            ORDER_NAME=?,
            CUSTOMER_ID=? 
        where
            ORDER_ID=?

    测试3:

        @Test
        public void testRemove() {
            Customer customerFetch = (Customer) session.get(Customer.class, 2);
            Order order = customerFetch.getOrders().listIterator().next();
            session.remove(order);
        }

    测试输出:

    Hibernate: 
        select
            customer0_.CUSTOMER_ID as CUSTOMER1_0_0_,
            customer0_.CUSTOMER_NAME as CUSTOMER2_0_0_ 
        from
            CUSTOMER customer0_ 
        where
            customer0_.CUSTOMER_ID=?
    Hibernate: 
        select
            orders0_.CUSTOMER_ID as CUSTOMER3_1_0_,
            orders0_.ORDER_ID as ORDER_ID1_1_0_,
            orders0_.orders_ORDER as orders_O4_0_,
            orders0_.ORDER_ID as ORDER_ID1_1_1_,
            orders0_.ORDER_NAME as ORDER_NA2_1_1_,
            orders0_.CUSTOMER_ID as CUSTOMER3_1_1_ 
        from
            ORDERS orders0_ 
        where
            orders0_.CUSTOMER_ID=?
    Hibernate: 
        delete 
        from
            ORDERS 
        where
            ORDER_ID=?
  • 相关阅读:
    ok6410 u-boot-2012.04.01移植六完善MLC NAND支持
    Apache XAMPP Fails to start under Windows XP
    Gridview导出到Excel
    PKU 1511 Invitation Cards (SPFA+邻接表)
    等待队列(二)
    HDU--杭电--1253--胜利大逃亡--广搜
    Java菜鸟学习笔记--Exception篇(一):异常简介
    jquery的DOM操作
    Windows下Postgre SQL数据库通过Slony-I 实现数据库双机同步备份
    POJ 2418 ,ZOJ 1899 Hardwood Species
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/6898489.html
Copyright © 2011-2022 走看看