自身跟自身的一对多关联 什么时候会出现自身一对多关系呢?下面举个例子. 淘宝店里商品分类,一级分类:家用电器,个人化妆,运动户外等 家用电器下面二级分类:大家电,生活电器,厨房电器等 二级分类大家电下的三级分类:平板电视,空调,冰箱,洗衣机等. 像这样的关系如何在数据库表中体现呢? 我们创建一个分类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(); } } 查看数据添加结果
|
相关文章
- 02-05孙卫琴的《精通JPA与Hibernate》的读书笔记:用@OneToOne注解映射一对一关联
- 02-05hibernate 一对多 关系关联映射
- 02-05孙卫琴的《精通JPA与Hibernate》的读书笔记:映射一对多双向关联关系
- 02-05hibernate--关联映射(多对一,一对一)
- 02-05JPA的一对多映射(双向)关联
- 02-05Hibernate关联关系映射之一对多双向映射
- 02-05Hibernate(6)—— 一对多 和 多对多关联关系映射(xml和注解)总结
- 02-05Hibernate(九)一对多双向关联映射
- 02-05hibernate对象关系映射( 一对一,一对多,多对一,多对多的单向,双向映射 ——)
- 02-05【SSH三大框架】Hibernate基础第六篇:多对一关联关系的映射、分析及加入、查询