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一对多关联映射
一对多关联映射 映射原理 一对多关联映射和多对一关联映射的映射原理是一致的,都是在多的一端加入一个外键,指向一的一端.关联关系都是由多端维护,只是在写映射时发生了变化. 多对一和一对多的区别 多对一和 ...
随机推荐
- Windows下Node.js的安装与配置
一.下载和安装 1. 前往官网https://nodejs.org/或https://nodejs.org/en/download/下载最新推荐版的Node.js,本文使用10.13.0版本. 对于W ...
- WPF的xaml中特殊字符表示
直接看表,描述很清晰 字符 转义字符 备注 & (ampersand) & 这个没什么特别的,几乎所有的地方都需要使用转义字符 > (greater-than character ...
- UWP FillRowViewPanel
最近有童鞋有这种需求,说实话我不知道这个Panel怎么起名字. 效果连接https://tuchong.com/tags/风光/ 下面是我做成的效果,可以规定每个Row的Items个数 2个 3个 4 ...
- Mysql数据优化--DBA梳理珍藏篇
1. 优化SQL 1) 通过show status了解各种sql的执行频率 show status like 'Com_%' 了解 Com_select,Com_insert 的 ...
- vue教程1-09 交互 vue实现百度下拉列表
vue教程1-09 交互 vue实现百度下拉列表 <!DOCTYPE html> <html lang="en"> <head> <met ...
- [Umbraco] xslt语言介绍及与umbraco的关系
XSLT是扩展样式表转换语言(Extensible Stylesheet Language Transformations)的简称,这是一种对XML文档进行转化的语言,XSLT中的T代表英语中的“转换 ...
- python面试(3)
一.语言 推荐一本看过最好的python书籍? 拉开话题好扯淡 谈谈python的装饰器,迭代器,yield? 标准库线程安全的队列是哪一个?不安全的是哪一个?logging是线程安全的吗? pyth ...
- 深入浅出SQL Server中的死锁(实战篇)
简介 死锁的本质是一种僵持状态,是多个主体对于资源的争用而导致的.理解死锁首先需要对死锁所涉及的相关观念有一个理解. 一些基础知识 要理解SQL Server中的死锁,更好的方式是通过类比从更大的面理 ...
- Linux下升级Python到3.5.2版本
原文出处:https://www.cnblogs.com/tssc/p/7762998.html 本文主要介绍在Linux(CentOS)下将Python的版本升级为3.5.2的方法 众所周知,在20 ...
- vuejs之Vue Devtools
Vue Devtools大法好 这是一篇小白friendly教程 Vue Devtools是一款谷歌浏览器插件,专门为调试vue而设计.假设你做了一个vue应用,当你在调试的过程中,打开的控制台是这样 ...





