我如何使用相同的类型匹配同一类中的对象列表

时间:2013-09-12 14:07:16

标签: hibernate

public class Person {
    private long id;
    private String name;
    private list<Person> persons;

    public long getId() {
      return id;
    }

    public void setId(long id) {
      this.id = id;
    }

    public String getName() {
      return name;
    }

    public void setName(String name) {
      this.name = name;
    }

    public String getPersons() {
      return persons;
    }

    public void setPersons(String persons) {
      this.persons = persons;
    }
}

我希望Hibernate OR Mapping与上面的代码请任何人帮助我。如何添加到该人员类的映射(人员列表属性)。

1 个答案:

答案 0 :(得分:0)

首先,我会使用Set而不是List,因为不允许重复。此外,在数据库表中,您需要具有Person_Id(主键)和Parent_Person_Id(引用Person_Id PK的外键)。这将确保一个人(父母)和一组人(关系中的孩子)之间的关系。一个例子是经理和员工。经理是一个人,因此是一个员工,但经理管理着许多员工,在这种情况下,父母是经理,雇员是子女。

所以你的Person类看起来像:

public class Person {
    // normal properties/attributes
    Set<Person> persons;

    // getters and setters
    // addPerson to the Set method
}

然后,您可以使用以下映射:

<set name="persons" table="Person" lazy="false" cascade="all-delete-orphan" inverse="false">
    <key column="person_id"/>
    <one-to-many class="xxx.Person" />
 </set>

但是,我发现以下article可能对您自己有用,因为您正在尝试实现自连接。