樹形結構的關系,在數據庫中的設計一般也就是id\pid這樣.對于Hibernate來說.其實也就在同一個類中自己對自己做一對多和多對一的雙向關系映射.

代碼如下.

package com.eneitys;

import java.util.HashSet;

import java.util.Set;

 

import javax.persistence.CascadeType;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.JoinColumn;

import javax.persistence.ManyToOne;

import javax.persistence.OneToMany;

 

@Entity

public class Org {

 

    private int id;

    private String name;

    private Set<Org> childrens=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)//mappedBy的值為在多的一方對一的引用的屬性名

    public Set<Org> getChildrens() {

       return childrens;

    }

    public void setChildrens(Set<Org> childrens) {

       this.childrens = childrens;

    }

   

    @ManyToOne

    @JoinColumn(name="parent_id")//指定多對一的外鍵字段名,這里如果不寫JoinColumn,會多一個字段!

    public Org getParent() {

       return parent;

    }

    public void setParent(Org parent) {

       this.parent = parent;

    }

}