您的位置:首页 > 其它

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

2016-07-01 14:38 323 查看
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 方法

    } 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息