Hibernate映射 --- 自身跟自身的一对多关联
2024-08-25 01:44:57
自身跟自身的一对多关联 什么时候会出现自身一对多关系呢?下面举个例子. 淘宝店里商品分类,一级分类:家用电器,个人化妆,运动户外等 家用电器下面二级分类:大家电,生活电器,厨房电器等 二级分类大家电下的三级分类:平板电视,空调,冰箱,洗衣机等. 像这样的关系如何在数据库表中体现呢? 我们创建一个分类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(); } } 查看数据添加结果
|
最新文章
- 判断IP地址是否合法类
- Bootstrap库之Modals
- MyBatis 3源码分析
- hdu 1166:敌兵布阵(树状数组 / 线段树,入门练习题)
- ☀【CSS3】box-sizing
- 使用wireshark抓本机之间的包(转)
- 一张图看懂片式多层陶瓷电容器(MLCC)
- JDK中的Timer和TimerTask详解
- 基于Python的数据分析:数据库索引效率探究
- Odoo开源智造IT经理人创业圆梦计划正式启动
- Delphi 获取DataSet传入参数后的SQL命令
- angular学习笔记(三)
- 2017-2018-2 20165325 实验二《Java面向对象程序设计》实验报告
- Visual Studio 2015编译Lua 5.3.4遇到的坑
- windows下python操作mysql模块安装
- visual studio 2017 installer 安装包制作过程出现的问题---此安装程序需要.NET Framework 版本 3.5,请安装该版本,然后重新运行此安装程序,可以从Web获得.NET Framework 。要立即做此事吗?
- 经典 mysql 28道题
- QT中QToolTip样式设置的两种方式
- cocos代码研究(25)Widget子类PageView学习笔记
- 63.UniquePaths II---dp
热门文章
- WPF MeasureOverride和 ArrangeOverride做个 页面导航
- VS2015+MySql+EF6采坑经验总结
- AJPFX讲解外汇保证金交易的货币符号和外汇的报价方式
- SVM的代码实现-python
- MySQL 5.6不删空用户的影响
- [0day]微软VS全版本DLL却持漏洞(VS2015 VS2013 VS2012 VS2010 VS2008)
- 利用VS2017跨平台远程调试aspnetcore应用
- C# 多线程学习系列二
- CentOS7系统下YUM安装安装Mongodb 3.4
- 全网最详细的hive-site.xml配置文件里添加<;name>;hive.cli.print.header<;/name>;和<;name>;hive.cli.print.current.db<;/name>;前后的变化(图文详解)