Hibernate 一对多自身双向关联关系 用于类别表的实现
分类:一对多自身双向关联关系
Java持久化类:
- package com.hyy.hibernate.one_to_many.domain;
- import java.util.HashSet;
- import java.util.Set;
- /**
- * 分类:一对多自身双向关联关系
- * User: HYY
- * Date: 13-12-13
- * Time: 下午7:32
- * To change this template use File | Settings | File Templates.
- */
- public class Category {
- private Integer id;
- private String name;
- private Category parent;
- private Set<Category> children = new HashSet<Category>();
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Category getParent() {
- return parent;
- }
- public void setParent(Category parent) {
- this.parent = parent;
- }
- public Set<Category> getChildren() {
- return children;
- }
- public void setChildren(Set<Category> children) {
- this.children = children;
- }
- }
Category.hbm.xml
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping package="com.hyy.hibernate.one_to_many.domain">
- <class name="Category" dynamic-update="true">
- <id name="id">
- <generator class="native"/>
- </id>
- <property name="name" length="50" access="property"/>
- <many-to-one name="parent" column="parent_id" />
- <set name="children" inverse="true" cascade="save-update" lazy="true">
- <key column="parent_id"/>
- <one-to-many class="Category"/>
- </set>
- </class>
- </hibernate-mapping>
一对多关联关系的one-to-many和many-to-one标签中的外键名要相同,比如本例的parent_id,一定是这两个,不能是其他了。
测试类:
- public class CategoryTest {
- @Test
- public void test1() {
- //食物
- Category food = new Category();
- food.setName("food");
- //水果
- Category fruit = new Category();
- fruit.setName("fruit");
- fruit.setParent(food);
- food.getChildren().add(fruit);
- //蔬菜
- Category veg = new Category();
- veg.setName("veg");
- veg.setParent(food);
- food.getChildren().add(veg);
- //苹果
- Category apple = new Category();
- apple.setName("apple");
- apple.setParent(fruit);
- fruit.getChildren().add(apple);
- Session session = HibernateUtil.getSession();
- session.beginTransaction();
- session.save(food);
- session.getTransaction().commit();
- }
- }
Hibernate 一对多自身双向关联关系 用于类别表的实现的更多相关文章
- Hibernate -- 一对多的双向关联关系
示例代码: Customer.java package cn.itcast.many2onedouble; import java.util.HashSet; import java.util.Set ...
- Hibernate映射多对多双向关联关系(小案例)
多对多双向关联关系(Project(工程)/Emp(员工)为案例): 步骤如下: 1.创建Project类,并需要定义集合类型的Emp属性 public class Project { //编号 pr ...
- Hibernate一对多(多对一)关联关系
上一篇博文总结了 Hibernate 的一对一的关联关系, 包括基于主键的单向一对一, 基于外键的单向一对一, 基于外键的双向一对一. 下面咱们说一下 Hibernate 的一对多关联关系. 其实一对 ...
- hibernate(十)双向关联关系的CRUD
本文链接:http://www.orlion.ml/28/ 一.保存 1. 假设一个group有多个user,一个user只属于一个group,当保存user对象到数据库中时可以 User u = n ...
- Hibernate -- 映射多对多双向关联关系
1. 示例代码: Student.java package cn.itcast.many2many; import java.util.HashSet; import java.util.Set; @ ...
- 03.Hibernate一对多关联
前言:在域模型中,类与类之间最普遍的关系就是关联关系,在UML语言中关联关系是有方向的.在数据库中表与表之间也会有关联关系,本节介绍通过Hibernate映射一对多的关联关系,这是一种最普遍的关联关系 ...
- Hibernate映射一对多双向关联关系及部门关联属性
一对多双向关联关系:(Dept/Emp的案例) 既可以根据在查找部门时根据部门去找该部门下的所有员工,又能在检索员工时获取某个员工所属的部门. 步骤如下: 1.构建实体类(部门实体类加set员工集合) ...
- Hibernate—— 一对多 和 多对多关联关系映射(xml和注解)总结(转载)
One to Many 映射关系 多对一单向外键关联(XML/Annotation) 一对多单向外键关联(XML/Annotation) 懒加载和积极加载 一对多双向外键关联(XML/Annotati ...
- hibernate 一对多双向关联 详解
一.解析: 1. 一对多双向关联也就是说,在加载班级时,能够知道这个班级所有的学生. 同时,在加载学生时,也能够知道这个学生所在的班级. 2.我们知道,一对多关联映射和多对一关联映射是一样的,都是在 ...
随机推荐
- easyui-validatebox验证 radio
添加规则 $.extend($.fn.validatebox.defaults.rules, { requireRadio: { validator: function(value, param){ ...
- div中的img垂直居中
<html> <head> <style type="text/css"> .imgDiv { overflow: hidden; displa ...
- 【MINA】用protobuf做编解码协议
SOCKET协议 支持java serial 与 AMF3的混合协议,目前没有基于xml 与 json的实现. 协议说明: * 9个字节协议头+协议体. * * 协议头1-4字节表示协议长度 =协议体 ...
- Html5时钟的实现
最近准备把自己的博客装修一下,首先,先为自己设计一个时钟吧,希望博客园能够尽快发放给我使用js的权限! 自从看见了苹果设计的那款因为侵权而赔钱了时钟,我就决定我的时钟一定是要参考这个来设计了! 不得不 ...
- 如何给windows窗体程序打包成一个安装包
http://blog.csdn.net/xyy410874116/article/details/6341787 给windows窗体程序打包成一个安装包:具体操作在:http://hi.baidu ...
- 【html】【17】高级篇--loading加载
参考: http://aspx.sc.chinaz.com/query.aspx?keyword=%E5%8A%A0%E8%BD%BD&classID=835 下载: http://sc. ...
- JavaScript中,按值传递与按地址(引用)传递。
JavaScript中,数字型,字符串,布尔型等基本类型,传递给变量时,传递方式为按值传递,这个很好理解,不做多解释. 而令人有所疑惑的,是数组,对象等引用类型传递给变量是,传递方式为按地址传递.此处 ...
- 深度模拟java动态代理实现机制系类之一
上一篇博客是最基本的动态代理原理的实现,因为其固定了接口,固定了代理方法,以及固定了代理的类型,接下来的博客系类将一步步渐入深度介绍java的动态代理的实现原理 ******************* ...
- Linux与Windows的桥梁--共享目录
1.关闭防火墙和selinux # service iptables stop # chkconfig --level 2345 iptables off ...
- centos7下编译qt的mysql驱动
在编译mysql驱动之前,首先要安装mysql,可以使用yum安装,这里将不再介绍. 在将qt和mysql都安装好之后,首先找到mysql的头文件以及他的共享库,我的mysql是使用yum安装的,头文 ...