您的位置:首页 > 其它

递归方式遍历子目录下的子目录

2010-09-21 21:59 393 查看
思考:
传入一个对象,获取该对像下的子目录。

注意:每个对象中都有不确定的子目录

例子:
package shadowingfly;

import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Transient;

//gf1袓父 f1父亲 f2父亲 c11小孩 c12小孩 c21小孩 c22小孩

@Entity
public class Department {
private int id;

private String name;
private boolean isRoot;
private String description;// 备注

private Department parent;
private Set<Department> children; // 通过Set将下级加入该实体

@OneToMany( mappedBy = "parent")
public Set<Department> getChildren() {
return children;
}

@ManyToOne
@JoinColumn
public Department getParent() {
return parent;
}

public void setChildren(Set<Department> children) {
this.children = children;
}
public void setParent(Department parent) {
this.parent = parent;

}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
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;
}

public boolean isRoot() {
return isRoot;
}

public void setRoot(boolean isRoot) {
this.isRoot = isRoot;
}

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}

@Transient
public boolean isTransient() {
return getId() < 1;
}
}
备注:添加Hibernate jar和Annotation jar包

测试类:
package test;

import java.util.Iterator;
import java.util.List;
import java.util.Set;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

import shadowingfly.Department;

public class T {

/**
* 要性能的话可以写成存储过程
*/
public static void main(String[] args) {
get();
}
public static void get(){
EntityManagerFactory f = Persistence.createEntityManagerFactory("sample");
EntityManager em = f.createEntityManager();

em.getTransaction().begin();
Department departmentf = em.find(Department.class,2);
getAllChildren(departmentf);
em.getTransaction().commit();

em.close();
f.close();
}
public static void getAllChildren(Department departmentf) {
System.out.println(departmentf.getName());
Set<Department> set = departmentf.getChildren();
if(set.size()!=0){
for(Department d:set){
getAllChildren(d);
}
}
}
备注:使用递归方式遍历子目录下的子目录

配置文件:
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
<persistence-unit name="sample" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="hibernate.dialect"
value="org.hibernate.dialect.MySQL5Dialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.connection.username" value="root" />
<property name="hibernate.connection.password" value="root" />
<property name="hibernate.connection.driver_class"
value="org.gjt.mm.mysql.Driver" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/test"/>
</properties>
</persistence-unit>
</persistence>
persistence.xml文件(记得修改连接方式)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: