分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

hibernate树

发布时间:2023-09-06 01:43责任编辑:赖小花关键词:暂无标签

1. 树实现通过pid进行指向上一层来实现,实体类代码如下

package com.test.model;import java.util.HashSet;import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.OneToMany;@Entitypublic class Org { ???private int id; ???private String name; ???private Set<Org> children = new HashSet<Org>(); ???private Org parent; ???????@Id ???@GeneratedValue ???public int getId() { ???????return id; ???} ???public void setId(int id) { ???????this.id = id; ???} ???public String getName() { ???????return name; ???} ???public void setName(String name) { ???????this.name = name; ???} ???????@OneToMany(mappedBy="parent", cascade=CascadeType.ALL, fetch=FetchType.EAGER) ???public Set<Org> getChildren() { ???????return children; ???} ???public void setChildren(Set<Org> children) { ???????this.children = children; ???} ???????@ManyToOne ???@JoinColumn(name="parent_Id") ???public Org getParent() { ???????return parent; ???} ???public void setParent(Org parent) { ???????this.parent = parent; ???}}

2.测试类代码如下,   查询时可通过递归进行查询

package com.test.test;import org.hibernate.classic.Session;import com.test.Util.HibernateUtil;import com.test.model.Org;public class StudentManager { ???public static void main(String[] args) { ???????new StudentManager().testSave(); ???} ???????public void testSave() { ???????Session session = HibernateUtil.getSessionFactory().getCurrentSession(); ???????session.beginTransaction(); ???????????????Org o = new Org(); ???????o.setName("总公司"); ???????????????Org o1 = new Org(); ???????o1.setName("分公司1"); ???????????????Org o2 = new Org(); ???????o2.setName("分公司2"); ???????????????Org o21 = new Org(); ???????o21.setName("分公司2_1"); ???????????????Org o22 = new Org(); ???????o22.setName("分公司2_2"); ???????????????o.getChildren().add(o1); ???????o.getChildren().add(o2); ???????????????o1.setParent(o); ???????????????o2.setParent(o); ???????o2.getChildren().add(o21); ???????o2.getChildren().add(o22); ???????????????o21.setParent(o2); ???????o22.setParent(o2); ???????????????session.save(o); ???????testLoad(); ???????session.getTransaction().commit(); ???} ???????public void testLoad() { ???????Session session = HibernateUtil.getSessionFactory().getCurrentSession(); ???????session.beginTransaction(); ???????Org org = (Org)session.load(Org.class, 1); ???????print(org, 0); ???????????} ???private void print(Org org, int level) { ???????String str = "----"; ???????for(int i=0; i<level; i++) { ???????????System.out.print(str); ???????} ???????????????System.out.println(org.getName()); ???????level++; ???????for(Org o:org.getChildren()) { ???????????print(o, level); ???????} ???}} ???

hibernate树

原文地址:https://www.cnblogs.com/redhat0019/p/8480051.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved