Hibernate映射 --- 自身跟自身的一对多关联
来源:互联网 发布:jquery怎么做分页java 编辑:程序博客网 时间:2024/05/18 01:21
自身跟自身的一对多关联
什么时候会出现自身一对多关系呢?下面举个例子.
淘宝店里商品分类,一级分类:家用电器,个人化妆,运动户外等
家用电器下面二级分类:大家电,生活电器,厨房电器等
二级分类大家电下的三级分类:平板电视,空调,冰箱,洗衣机等.
像这样的关系如何在数据库表中体现呢?
我们创建一个分类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();
}
* @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 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();
}
}
查看数据添加结果
0 0
- Hibernate映射 --- 自身跟自身的一对多关联
- hibernate一对多关系映射(自身关联)
- hibernate之映射关系一对多(自身关联)
- 一对多自身关联双向映射
- hibernate 一对多双向自身关联
- Hibernate自身双向一对多关联
- Hibernate自身双向一对多关联
- hibernate映射总结详解: 映射一对多双向自身关联关系
- hibernate映射多对多,一对一,一对多,自身关联综合应用
- hibernate映射一对多,双向关系[关联自身],初学例子四
- 精通Hibernate——映射一对多双向自身关联关系
- 映射Category一对多双向自身关联关系
- Hibernate4一对多关系映射(自身关联)
- JPA - 一对多自身映射
- hibernate自身一对多和自身多对多映射详解
- hibernate 自身表关联的多对一,一对多关系的实现
- Hibernate一对多自身映射(参考张龙老师的视频的^_^)
- 8、自身双向一对多关联关系
- hdu2159FATE【二维完全背包】
- iOS9 NSURL不能工作的解决方法
- ubuntu下自动打开多终端的多个标签并执行不同脚本的方法
- Unity3d 游戏场景优化 第一章
- 082&083 Remove Duplicates from Sorted List I II [Leetcode]
- Hibernate映射 --- 自身跟自身的一对多关联
- iOS nil, Nil, NSNull NULL的区别
- win7系统ActiveMQ安装后,提示端口被占用无法启动问题
- 转做大系统硬件
- 列表ListView控件的使用
- C++读写初步
- XRay5
- next-key lock (glap lock)完全解析.
- Android学习笔记32:滑屏控件ViewPager的使用