0
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が必要です。誰か助けてください。その人物クラス(人物プロパティのリスト)にマッピングを追加するにはどうすればよいですか。

4

1 に答える 1

0

まず、重複は許可されていないため、リストの代わりにセットを使用します。また、データベース テーブルには、Person_Id (主キー) と Parent_Person_Id (Person_Id PK を参照する外部キー) が必要です。これにより、個人 (親) と一連の人々 (関係における子供) の間の関係が保証されます。1 つの例は、マネージャと従業員の例です。マネージャーは個人であり、従業員でもありますが、マネージャーは多くの従業員を管理します。この場合、親はマネージャーであり、従業員は子です。

したがって、 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>

ただし、自己結合を実装しようとしている場合、次の記事がこの問題に役立つ可能性があることがわかりました。

于 2013-09-12T14:19:59.437 に答える