Hibernate映射 --- 自身跟自身的一对多关联
|
自身跟自身的一对多关联 什么时候会出现自身一对多关系呢?下面举个例子. 淘宝店里商品分类,一级分类:家用电器,个人化妆,运动户外等 家用电器下面二级分类:大家电,生活电器,厨房电器等 二级分类大家电下的三级分类:平板电视,空调,冰箱,洗衣机等. ![]() 像这样的关系如何在数据库表中体现呢? 我们创建一个分类category表,专门用来存储类别.并定义一个parent_id字段和level等级字段.用来记录分类级别的信息,其中parent_id是外键,其主键就是自身的id ![]() ![]() 数据库表创建好了,下面通过Hibernate逆向工程,生成映射文件和持久化类. category父类和子类的关联关系是一对多的关联关系.因此在持久化类中添加set<Category>用来保存多的一方 ![]() ![]() 第三步:编写测试类 package com.entity;
/** * 自身一对多关系案例 */ import org.hibernate.Session;
import com.util.HibernateSessionFactory;
public class HibernateTest {
/**
* @param args */ public static void main(String[] args) { HibernateTest hibernateTest = new HibernateTest(); hibernateTest.addThirdLevel(); } /**
* 添加一级分类 */ public void addFirstLevel(){ Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession(); session.beginTransaction(); //添加一级分类 Category c1 = new Category(); c1.setName("个人化妆"); c1.setDescription("个人化妆"); c1.setLevel(1); Category c2 = new Category(); c2.setName("运动户外"); c2.setDescription("运动户外"); c2.setLevel(1); session.save(c1); session.save(c2); session.beginTransaction().commit(); } /**
* 添加二级分类 */ public void addSecondLevel(){ Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession(); session.beginTransaction(); //为家用电器添加二级分类 Category c1 = new Category(); c1.setName("大家电"); c1.setDescription("大家电"); c1.setLevel(2); Category c2 = new Category(); c2.setName("生活家电"); c2.setDescription("生活家电"); c2.setLevel(2); //父类 Category parent = (Category) session.get(Category.class, 1); c1.setParentCategory(parent); c2.setParentCategory(parent); session.save(c1); session.save(c2); session.beginTransaction().commit(); } /** * 添加三级分类 */ public void addThirdLevel(){ Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession(); session.beginTransaction(); //为大家电添加三级分类 Category c1 = new Category(); c1.setName("平板电视"); c1.setDescription("平板电视"); c1.setLevel(2); Category c2 = new Category(); c2.setName("空调"); c2.setDescription("空调"); c2.setLevel(2); //父类 Category parent = (Category) session.get(Category.class, 4); c1.setParentCategory(parent); c2.setParentCategory(parent); session.save(c1); session.save(c2); session.beginTransaction().commit(); } } 查看数据添加结果
![]() |
Hibernate映射 --- 自身跟自身的一对多关联的更多相关文章
- hibernate映射的 关联关系:有 一对多关联关系,一对一关联关系,多对多关联关系,继承关系
hibernate环境配置:导包.... 单向n-1:单向 n-1 关联只需从 n 的一端可以访问 1 的一端 <many-to-one> 元素来映射组成关系: name: 设定待映射的持 ...
- hibernate映射xml文件配置之一对多,多对多
一对多配置 [1]班级和学生模型 --->班级可容纳多个学生 --->学生只能属于一个班级 [2]一对多配置中的关系维护(inverse) --->一端放弃关系的维护 ---> ...
- Hibernate映射解析——七种映射关系
首先我们了解一个名词ORM,全称是(Object Relational Mapping),即对象关系映射.ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现,这样开发人员就可以把对 ...
- Hibernate映射--基本类映射和对象关系映射(转)
原文地址:http://blog.csdn.net/lovesummerforever/article/details/20901011 尊重原创,请访问原网址 回想一些我们在没有学习ssh的时候 ...
- MyBatis多对一,一对多,多对多,一对多关联查询
一.Person实体类 1 public class Person { 2 private Integer personId; 3 private String name; 4 private Int ...
- (Hibernate进阶)Hibernate映射——一对多关联映射(七)
一对多关联映射 映射原理 一对多关联映射和多对一关联映射的映射原理是一致的,都是在多的一端加入一个外键,指向一的一端.关联关系都是由多端维护,只是在写映射时发生了变化. 多对一和一对多的区别 多对一和 ...
- 【SSH系列】Hibernate映射 -- 一对多关联映射
映射原理 一对多关联映射和多对一关联映射的映射原理是一样一样的,所以说嘛,知识都是相通的,一通百通,为什么说一对多关联映射和多对一关联映射是一样的呢?因为她们都是在多的一端加入一个 ...
- 【SSH进阶之路】Hibernate映射——一对多关联映射(七)
上上篇博文[SSH进阶之路]Hibernate映射——一对一单向关联映射(五),我们介绍了一对一的单向关联映射,单向是指只能从人(Person)这端加载身份证端(IdCard),但是反过来,不能从身份 ...
- hibernate一对多关联映射
一对多关联映射 映射原理 一对多关联映射和多对一关联映射的映射原理是一致的,都是在多的一端加入一个外键,指向一的一端.关联关系都是由多端维护,只是在写映射时发生了变化. 多对一和一对多的区别 多对一和 ...
随机推荐
- 检查.net dll构建的目标平台是any cpu、x86、x64
有时候,需要检查构建的dll是否针对正确的平台 可以使用CorFlags.exe(它是.NET Framework SDK的一部分)从dll中查找此信息.运行CorFlags.exe将产生以下输出: ...
- fcitx、ibus、scim
我觉得还是小企鹅fcitx好用点,兼容性好.速度快.配置简单. 在debian stable下,ibus用apt-get install完以后根本就不出现. scim倒是不用配置自己出来了,但是问题多 ...
- Linux之IRQ domain
概述 Linux使用IRQ domain来描述一个中断控制器(IRQ Controller)所管理的中断源.换句话说,每个中断控制器都有自己的domain.我们可以将IRQ Domain看作是IRQ ...
- 协程 coroutine
参考链接: http://manual.luaer.cn/2.11.html http://www.cnblogs.com/riceball/archive/2008/01/03/1025158.ht ...
- Flash 0day漏洞(CVE-2018-4878)复现
该漏洞影响 Flash Player 当前最新版本28.0.0.137以及之前的所有版本,而Adobe公司计划在当地时间2月5日紧急发布更新来修复此漏洞. 本文作者:i春秋作家——F0rmat 前言 ...
- 【UML】:时序图
时序图表达了类之间调用关系,以及调用时序关系. Actor: 调用者实例化类的对象,执行者. Lifeline: 生命线,竖的虚线.上方方框是类名表示存在的时间,从上至下表示时间流逝.Lifeline ...
- django-子项目
当我们开始做一个项目的时候 ,当我们做的项目越来越大的时候py文件已经不足以分担 并且看起来不清晰 所以我们需要 新建一个子项目 这样的话可以方便管理 我们要建立子项目的话先进入那个项目的文件 ...
- js 开发过程中经验及总结记录
一 let 和 var 作用域 1 普通用法 for (var i = 0; i < 5; i++) { console.log(i); } console.log(i); //-- ...
- Spring Boot启动流程
基础准备 1,BeanPostProcessor:这个接口的作用在于对于新构造的实例可以做一些自定义的修改.比如如何构造.属性值的修改.构造器的选择等等 2,BeanFactoryPostProces ...
- Sublime text3 Package Control不能使用
Package Control打开时提示"There are no availabel for installation"的两个处理办法: 第一种: ping一下sublime的服 ...





