一对多自身关联双向映射
来源:互联网 发布:数据库查询分析器 编辑:程序博客网 时间:2024/05/01 15:36
一个一对多双向自身关联映射案例
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="com.bjpowernode.hibernate.Category" table="t_category"><id name="id"><generator class="native"/></id><property name="name"/><many-to-one name="parentCategory" column="category_id" cascade="save-update"/><set name="childCategory" cascade="save-update"> <key column="category_id"/> <one-to-many class="com.bjpowernode.hibernate.Category"/></set></class></hibernate-mapping>
package com.bjpowernode.hibernate;import java.io.Serializable;import java.util.HashSet;import java.util.Set;public class Category implements Serializable{ private Integer id; private String name; private Category parentCategory; private Set childCategory = new HashSet();public Integer getId() {return id;}private void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Category getParentCategory() {return parentCategory;}public void setParentCategory(Category parentCategory) {this.parentCategory = parentCategory;}public Set getChildCategory() {return childCategory;}public void setChildCategory(Set childCategory) {this.childCategory = childCategory;} }
工具类
package com.bjpowernode.hibernate;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtils {private static SessionFactory factory;static {try {//读取hibernate.cfg.xml文件Configuration cfg = new Configuration().configure();//建立SessionFactoryfactory = cfg.buildSessionFactory();}catch(Exception e) {e.printStackTrace();}}public static Session getSession() {return factory.openSession();} public static void closeSession(Session session) {if (session != null) {if (session.isOpen()) {session.close();}}}public static SessionFactory getSessionFactory() {return factory;}}
测试类:
package com.bjpowernode.hibernate;import java.util.HashSet;import org.hibernate.Session;import junit.framework.TestCase;public class Test extends TestCase { public void addCategory(){ //创建session Session session = null; try{ session = HibernateUtils.getSession(); session.beginTransaction(); Category food = new Category(); food.setName("food"); Category vegetable = new Category(); vegetable.setName("vegetable"); Category fruit = new Category(); fruit.setName("fruit"); Category tomato = new Category(); tomato.setName("tomato"); Category apple = new Category(); apple.setName("apple"); Category orange = new Category(); orange.setName("orange"); food.getChildCategory().add(vegetable); vegetable.setParentCategory(food); food.getChildCategory().add(fruit); fruit.setParentCategory(food); fruit.getChildCategory().add(apple); apple.setParentCategory(fruit); fruit.getChildCategory().add(orange); orange.setParentCategory(fruit); fruit.getChildCategory().add(tomato); tomato.setParentCategory(fruit); session.save(food); session.beginTransaction().commit(); } catch(Exception e){ session.beginTransaction().rollback(); e.printStackTrace(); } finally{ HibernateUtils.closeSession(session); } } public void modifyCategory(){ //创建session Session session = null; try{ session = HibernateUtils.getSession(); session.beginTransaction(); Category tomato = (Category)session.get(Category.class, 5); Category vegetable = (Category)session.get(Category.class, 6); Category fruit = (Category)session.get(Category.class, 2); fruit.getChildCategory().remove(tomato); vegetable.getChildCategory().add(tomato); tomato.setParentCategory(vegetable); session.beginTransaction().commit(); } catch(Exception e){ session.beginTransaction().rollback(); e.printStackTrace(); } finally{ HibernateUtils.closeSession(session); } }}
- 一对多自身关联双向映射
- 映射Category一对多双向自身关联关系
- hibernate映射总结详解: 映射一对多双向自身关联关系
- hibernate 一对多双向自身关联
- Hibernate自身双向一对多关联
- 8、自身双向一对多关联关系
- Hibernate自身双向一对多关联
- hibernate一对多关系映射(自身关联)
- hibernate映射一对多,双向关系[关联自身],初学例子四
- 精通Hibernate——映射一对多双向自身关联关系
- Hibernate映射 --- 自身跟自身的一对多关联
- 06映射一对多双向关联关系
- 一对多关联映射(双向)
- Hibernate一对多关联双向映射
- 一对多双向关联映射(九)
- hibernate映射一对多双向关联关系
- Hibernate一对多双向关联映射
- 双向一对多的关联映射
- svn: Unrecognized URL scheme
- Edit Distance
- python(2.6适用)备份mysql数据库
- jquery 插件编写教程
- 如何写一个完善的c++异常处理类
- 一对多自身关联双向映射
- HTML5游戏技术开发难点分析
- c++/c 获取cpp文件行号跟文件名
- 我于XX公司出差的所见所闻
- 为何HttpURLConnection上传文件进度显示传完了,但是却一直卡在那不动了
- 堆和栈的区别
- 判断二叉搜索树的前序遍历序列
- ListView GridView,ViewpAger等的getView方法调用多次
- 场景模式scence mode流程