Hibernate 映射文件中多种关联关系的实现

Hibernate 中,常常涉及数据表之间的多对多,一对多,多对一的 表关系。现分别给出,这三类关系的代码实现。

Oeder 的 Hibernate 映射,集合采用 one-to-many 标签,实现一对多的表关系。
Order.hbm.xml
    <!-- 订单与用户关联配置 -->
    <many-to-one name="user" lazy="false" class="cn.itcast.shop.user.vo.User" column="uid"/>
    <!-- 订单与订单项关联配置 -->
    <set name="orderItems" lazy="false" cascade="save-update">
        <key column="oid"/>
        <one-to-many class="cn.itcast.shop.order.vo.OrderItem"/>
    </set>
Order.java
    // 用户的外键:对象
    private User user;
    // 配置订单项的集合
    private Set<OrderItem> orderItems = new HashSet<OrderItem>();

OrderItem 的 Hibernate 映射,集合采用 many-to-one 标识符映射,实现多对一的表关系。

OrderItem.hbm.xml

<many-to-one name="product" lazy="false" class="cn.itcast.shop.product.vo.Product" column="pid"></many-to-one>
<many-to-one name="order" class="cn.itcast.shop.order.vo.Order" column="oid"/>

OrderItem.java

public class OrderItem {
    // 商品外键:对象
    private Product product;
    // 订单外键:对象
    private Order order;    
}

Role的Hibernate映射,集合采用 many-to-many 标签,实现多对多的表关系。
Role.hbm.xml
    <set name="rights" table="role_right_link" lazy = "false">
        <!-- key 是角色的外键 -->
        <key column="roleid">
        <!-- Right和Role在同一个package 之下直接写名称即可-->
        <!-- User 之中Role不在同一个包下,因此,写完整路径-->
        <many-to-many class="Right" column="rightid"/>
    </set>
Role.java
    public class Role{        
        // 权限集合
        private Set<Right> rights = new HashSet<Right>();
        // 各自的 get 与 set 方法
    } 

你可能感兴趣的:(Hibernate,一对多,one,多对一,many)