`
eagle0824
  • 浏览: 228195 次
  • 性别: Icon_minigender_1
  • 来自: 镇江
社区版块
存档分类
最新评论

hibernate 树状展示

阅读更多
实体类


package com.eagle.hibernate.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.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

@Entity
public class Company {
	private int id;
	private String name;
	private Set<Company> children = new HashSet<Company>();
	private Company 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(cascade=CascadeType.ALL, mappedBy="parent",fetch=FetchType.EAGER)
	public Set<Company> getChildren() {
		return children;
	}
	public void setChildren(Set<Company> children) {
		this.children = children;
	}
	
	@ManyToOne
	@JoinColumn(name="parentId")
	public Company getParent() {
		return parent;
	}
	public void setParent(Company parent) {
		this.parent = parent;
	}
	
	
}




测试类
package com.eagle.hibernate.model;

import java.util.Date;
import java.util.Set;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;


public class HibernateCoreAPI {
private static SessionFactory sf;
	
	@BeforeClass
	public static void buildSession(){

		try {
			new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);
			sf = new AnnotationConfiguration().configure().buildSessionFactory();
		} catch (HibernateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	@AfterClass
	public static void closeSession(){
		sf.close();
	}
	@Test
	public void testSchemaExport(){
		new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);
		
	}
	@Test
	public void testSaveCompany(){
		Company company = new Company();
		company.setName("总公司");
		Company company1 = new Company();
		company1.setName("子公司1");
		Company company2 = new Company();
		company2.setName("子公司2");
		
		Company company3 = new Company();
		company3.setName("子公司3");
		
		Company company4 = new Company();
		company4.setName("子子公司2_1");
		Company company5 = new Company();
		company5.setName("子子公司2_2");
		Company company6 = new Company();
		company6.setName("子子公司2_3");
		Company company7 = new Company();
		company7.setName("子子公司3_1");
		
		company.getChildren().add(company1);
		company.getChildren().add(company2);
		company.getChildren().add(company3);
		company1.setParent(company);
		company2.setParent(company);
		company3.setParent(company);
		
		company2.getChildren().add(company4);
		company2.getChildren().add(company5);
		company2.getChildren().add(company6);
		company4.setParent(company2);
		company5.setParent(company2);
		company6.setParent(company2);
		
		company3.getChildren().add(company7);
		company7.setParent(company3);
	Session s = sf.getCurrentSession();
	s.beginTransaction();
	s.save(company);
	s.getTransaction().commit();
	
	
	}
	
	@Test
	public void testLoad(){
		 testSaveCompany();
		 Session s = sf.getCurrentSession();
		 s.beginTransaction();
		 Company c = (Company)s.get(Company.class, 1);
		 print(c,0);
		 s.getTransaction().commit();
	}

	private void print(Company c,int level) {
		String str = "";
		for(int i=0;i<level;i++){
			str += "----";
		}
		System.out.println(str + c.getName());
		for(Company company:c.getChildren()){
			print(company,level+1);
		}
		
	}
	
}

分享到:
评论

相关推荐

    理财管理软件CS版(JAVA+Hibernate+MySql)

    ◎工程环境:MyEclipse8.5+MySQL+Hibernate3.0 ◎系统介绍: 界面设计简洁、友好、美观大方。 操作简单、快捷方便 数据存储安全、可靠。 信息分类清晰、准确。 强大的查询功能,保证数据查询的灵活性。 提供统计报表...

    基于Java的Web考试系统,包含题库编辑、抽题组卷、试题分析、在线考试等功能,满分毕设系统,计算机必看!

    - 章节知识点的分层和树状展示 - 管理广播消息的推送、系统设置的修改 目前项目基于以下平台(框架、库): - JDK 1.8 - Tomcat 8.0 (with WebSocket) - Hibernate 5.1 - Struts 2.5 - Spring 4.3 - JFreeChart ...

    java-exam:Java实现的包含题库编辑、抽题组卷、试题分析、在线考试等模块的Web考试系统

    章节知识点的分层和树状展示 管理广播消息的推送、系统设置的修改 目前项目基于以下平台(框架、库): JDK 1.8 Tomcat 8.0 (with WebSocket) Hibernate 5.1 Struts 2.5 Spring 4.3 JFreeChart 1.0.19 Maven ...

    基于JAVA SSH+DWZ的权限管理系统 keta-custom

    该平台使用了maven作为项目管理,使用了web开发流行的框架便于学习使用,具体使用了spring、springmvc、spring ache (安全)shiro、hibernate、freemark等框架,为了统一页面风格使用DWZ作为页面富客户端的展示。...

    JAVA高并发高性能高可用高扩展架构视频教程

    WEB高级前后台分离思维-懒加载无限级树形菜单 动态页面的静态化处理 大并发展示优化,动态页面的静态化 深入理解JDK动态代理本质 企业级高并发缓存解决方案 性能优化之Oracle语句优化雾区 前后台数据验证架构源码级...

    javapms门户网站源码

    页面模板控制前台页面所展示出来的显示效果,点击“系统管理”左侧功能菜单里的“模板管理”,所有模板都按页面类型树状显示,如下图所示: 点击某个模板末级节点,可以查看模板详细html代码,对模板进行编辑修改...

    SqlToolBox 1.8.2

    在这颗树中,表格(table)是以小圆点的方式展现的,左键点击这个圆点,程序将在右侧打开一个Sql语句操作窗口,并执行“select * from table”语句,最后在下方以表格的形式展现给您;如果您用右键点击这个圆点,...

    Guns-Separation-其他

    4、机构管理:公司组织架构维护,支持多层级结构的树形结构。5、职位管理:用户职务管理,职务可作为用户的一个标签,职务目前没有和权限等其他功能挂钩。6、菜单管理:菜单目录,菜单,和按钮的维护是权限控制的...

    Guns-Separation v1.1

    4、机构管理:公司组织架构维护,支持多层级结构的树形结构。 5、职位管理:用户职务管理,职务可作为用户的一个标签,职务目前没有和权限等其他功能挂钩。 6、菜单管理:菜单目录,菜单,和按钮的维护是权限控制...

    Struts2入门教程。包括jquery集成等。入门必看

    第 1章 STRUTS2入门................................................................................................................................................3 第 2章STRUTS2晋级.....................

Global site tag (gtag.js) - Google Analytics