2

セルフ エンティティに 1 対 1 のマッピングを追加する方法。この例のように。Person自体の親子関係を持ちたいです。

@Entity
@Table(name="PERSON")
public class Person {

@Id
@Column(name="personId")
private int id;

@OneToOne
@JoinColumn()
private Person parentPerson;
}
4

2 に答える 2

5

双方向セルフ マッピングの例を次に示し@OneToOneます (列名を SQL 表記に変更します)。

@Entity
@Table(name="PERSON")
public class Person {

    @Id
    @Column(name="person_id")
    private int id;

    @OneToOne
    @JoinColumn(name = "parent_person_id")
    private Person parentPerson;

    @OneToOne(mappedBy = "parentPerson")
    private Person childPerson;
}

しかし、この場合に使用する理由がわかりません@OneToOne

于 2013-08-28T12:53:27.757 に答える
1

私はこのように使用しています:

@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "PARENT_ID", nullable = true)
private Person parent;

サービス層から親を追加するには、データベースに少なくとも 1 つ存在している必要がありPersonます。

あなたがそうすると仮定しましょう。次に、新しい人物を作成します。例:

@Transactional
public void createPerson() {
   Person parent = //get your parent
   Person child = new Person();
   if (parent != null) {
       child.setParent(parent);
   }
}

これがあなたの言いたいことなら..

于 2013-08-29T10:25:46.597 に答える