看下我的这个帖子,用hibernate实现树状结构。
http://blog.csdn.net/pizzame/archive/2007/10/09/1816811.aspx

解决方案 »

  1.   

     mappedBy reference an unknown target entity property: shadowingfly.Employee.parent in shadowingfly.Department.children
      

  2.   

    照LS说的我尝试了自己对自己双向多对一不行package shadowingfly;import java.util.Set;import javax.persistence.CascadeType;
    import javax.persistence.Entity;
    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;@Entity
    public class Department {
    private int id;
    private Department parent;
        private Set<Employee> children; //通过Set将下级加入该实体 private String name;
    private boolean isRoot;
    private String description;// 备注
    public Department() { }
    @OneToMany(cascade = CascadeType.ALL,mappedBy ="parent" )
    public Set<Employee> getChildren() {
    return children;
    } public void setChildren(Set<Employee> children) {
    this.children = children;
    } @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    public int getId() {
    return id;
    } public void setId(int id) {
    this.id = id;
    } @ManyToOne
    @JoinColumn
    public Department getParent() {

    return parent;
    }
         
    public void setParent(Department parent)
    {
    this.parent = parent;

    } 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;
    }}
      

  3.   

    搞定了...谢谢
    pizzame
    结贴package shadowingfly;import java.util.Set;import javax.persistence.CascadeType;
    import javax.persistence.Entity;
    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;@Entity
    public class Department {
    private int id;
    private Department parent;
        private Set<Department> children; //通过Set将下级加入该实体 private String name;
    private boolean isRoot;
    private String description;// 备注
    public Department() { }
    @OneToMany(cascade = CascadeType.ALL,mappedBy ="parent" )
    public Set<Department> getChildren() {
    return children;
    } public void setChildren(Set<Department> children) {
    this.children = children;
    } @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    public int getId() {
    return id;
    } public void setId(int id) {
    this.id = id;
    } @ManyToOne
    @JoinColumn
    public Department getParent() {

    return parent;
    }
         
    public void setParent(Department parent)
    {
    this.parent = parent;

    } 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;
    }}
      

  4.   

    这样映射造成这个表drop不了了...
      

  5.   

    详细描述下,如果是因为级联问题而导致的drop不了,一般要将你在关系数据库中的关系全部去掉。