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 方法
}
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 方法
}
相关文章推荐
- 解析jQuery的三种bind/One/Live事件绑定使用方法
- Hibernate Oracle sequence的使用技巧
- jsp Hibernate批量更新和批量删除处理代码
- jsp hibernate的分页代码第1/3页
- Struts2+Hibernate实现数据分页的方法
- Hibernate环境搭建与配置方法(Hello world配置文件版)
- JAVA+Hibernate 无限级分类
- SSH整合中 hibernate托管给Spring得到SessionFactory
- jsp hibernate 数据保存操作的原理
- hibernate中的增删改查实现代码
- 解决hibernate+mysql写入数据库乱码
- java优化hibernate性能的几点建议
- java Hibernate延迟加载
- hibernate 常用方法介绍
- 详解Java的Hibernate框架中的注解与缓存
- 浅析Java的Hibernate框架中的继承关系设计
- mysql "too many connections" 错误 之 mysql解决方法
- linux bash中too many arguments问题的解决方法
- Hibernate实现批量添加数据的方法
- Hibernate4在MySQL5.1以上版本创建表出错 type=InnDB