项目使用struts2 和 hibernate 跟 ext, 数据库表结构
dict_id     int (主键)
dict_code   varchar
dict_name   varchar
parent_id   int 
,请教大家

解决方案 »

  1.   

    是oracle吗?
    oracle查询树形结构
    select * from 表 start with dict_id connect by prior dict_id = parent_id
      

  2.   


    package eg;import java.util.*;
    import javax.persistence.*;@Entity
    @Table(name = "t_emp")
    public class Employee implements java.io.Serializable { private static final long serialVersionUID = -9037916598216851263L; private Integer id;
    private String name;
    private Set<Employee> subordinates;
    private Employee leader; public Employee() {
    subordinates = new HashSet<Employee>();
    }

    public Employee(String name) {
    this();
    this.name = name;
    } @Id
    @Column(name = "_id")
    @GeneratedValue
    public Integer getId() {
    return id;
    } public void setId(Integer id) {
    this.id = id;
    } @Column(name = "_name", length = 30, nullable = false)
    public String getName() {
    return name;
    } public void setName(String name) {
    this.name = name;
    } @OneToMany(mappedBy = "leader", cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
    public Set<Employee> getSubordinates() {
    return subordinates;
    } public void setSubordinates(Set<Employee> subordinates) {
    this.subordinates = subordinates;
    } @ManyToOne
    @JoinColumn(name = "_leader_id")
    public Employee getLeader() {
    return leader;
    } public void setLeader(Employee leader) {
    this.leader = leader;
    } public void addSubordinate(Employee emp) {
    emp.setLeader(this);
    subordinates.add(emp);
    }
    }
    hibernate树状映射好办啊。看我给你的列子。每个员工都对应一堆下属。下属用Set保存起来了。
      

  3.   

    是sql server
    能给一个完整的业务逻辑方法么?查询数据的话 是先全部查询出来 然后根据parnetid 来判断是子节点 怎么组合这个树形 头大啊 
      

  4.   

    加点冗余更简单,isleaf //是否叶子节点 level//第几级  
    不然你每次要查是不是叶子节点,处在第几级,效率肯定也要低点