zoukankan      html  css  js  c++  java
  • Hibernate 双向一对多映射

    附代码:

      

    public class Order {
        private Integer id;
        private String OrderName;
        private Customer customer;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getOrderName() {
            return OrderName;
        }
    
        public void setOrderName(String orderName) {
            OrderName = orderName;
        }
    
        public Customer getCustomer() {
            return customer;
        }
    
        public void setCustomer(Customer customer) {
            this.customer = customer;
        }
    
    }
    Order
    public class Customer {
        private Integer id;
        private String customerName;
        private Set<Order> orders = new HashSet<>();
    
        public Set<Order> getOrders() {
            return orders;
        }
    
        public void setOrders(Set<Order> orders) {
            this.orders = orders;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getCustomerName() {
            return customerName;
        }
    
        public void setCustomerName(String customerName) {
            this.customerName = customerName;
        }
    
    }
    Customer
    <hibernate-mapping package="com.hibernate.entities.n21.both">
        <class name="Customer" table="CUSTOMERS">
            <id name="id" type="java.lang.Integer">
                <column name="ID" />
                <generator class="native" />
            </id>
            <property name="customerName" type="java.lang.String">
                <column name="CUSTOMER_NAME" />
            </property>
            <set name="orders" table="ORDERS" inverse="true">
                <key>
                    <column name="CUSTOMER_ID"></column>
                </key>
                <one-to-many class="Order"/>
            </set>
        </class>
    </hibernate-mapping>
    Customer.hbm.xml
    <hibernate-mapping package="com.hibernate.entities.n21.both">
        <class name="Order" table="ORDERS">
            <id name="id" type="java.lang.Integer">
                <column name="ID" />
                <generator class="native" />
            </id>
            <property name="OrderName" type="java.lang.String">
                <column name="ORDER_NAME" />
            </property>
            <many-to-one name="customer" class="Customer" fetch="join">
                <column name="CUSTOMER_ID" />
            </many-to-one>
        </class>
    </hibernate-mapping>
    Order.hbm.xml

    首先,在 Customer 类中添加了 Set 类型的 orders 属性,用来映射 Order。

    Order 数据表通过 Customer_Id 来映射 Customer

    在 .hbm.xml mapping 文件中,Customer 使用 set 节点设置了 orders 属性

    <set name="orders" table="ORDERS" inverse="true">
                <key>
                    <column name="CUSTOMER_ID"></column>
                </key>
                <one-to-many class="Order"/>
    </set>

    其中:

      name 表示 Customer 中该属性的名字

      table 表示所映射的对象的数据表的表名

      inverse 用来设置由谁来维护映射关系,inverse 英文意思是相反的,此处设置为 true ,意思是让对方来维护映射关系。inverse 的默认值为 false

      子节点 key :用来设置通过哪个列来检索所映射的对象

      one-to-many:通过设置 class 属性来指定所映射的对象的类名

      order-by:设置 Set 集合中对象如何排序,如:order-by=“Order_Name Desc”,其中 Order_Name 表示数据表中的列名, Desc 表示排序方式

    在这里,可以通过设置 cascade 来设置级联关系,具体可以百度,教程中建议不用这个属性,但感觉这个属性还是很方便的,此处留个记号,以后研究

  • 相关阅读:
    50 个 jQuery 插件可将你的网站带到另外一个高度
    查看占用IO的进程
    google全球地址
    php http请求封装
    如何促使团队紧密协作
    pureftpd.passwd解析
    goaccess生成nginx每日访问纪录
    bootstrap的一些资源
    php write_ini_file
    mysql查询区分大小写
  • 原文地址:https://www.cnblogs.com/zyx1301691180/p/7693642.html
Copyright © 2011-2022 走看看