2016-07-14 9 views
0

親がマージされているときに、子オブジェクトのIDを取得する明確な方法はありますか?休止状態で親をマージした後に子のIDを取得

I.e.

Parent parent = parentDao.get(parentid); 
Child child = new Child(); 
parent.addChild(child); 
parentDao.merge(parent); 
child.getId() // is null 

私は親と子供の間に多対1の関係があります。

もう1つの質問がこれを尋ねました。唯一の解決策は子供のリストを横断することでしたが、それは恐ろしくてハッキリと聞こえます。

JPA How can I get the generated id/object when using merge from parent but child is created?

確かにこれまでよりよい解決策がなければなりません。以下の双方向のエンティティの構造を考慮し

+0

最終的にモデルを変更して、子エンティティを永続化できるようにしました。 – wybourn

答えて

0

、すなわち

class Parent{ 
    @OneToMany 
    List<Child> children; 
} 

class Child{ 
    @ManyToOne 
    Parent parent; 
} 

あなたは子供のためのIDを取得するために、第1子を永続化する必要があります。

entityManager.persist(child)のようになり、親クラスでcascadeTypeCascade.ALLに設定していない限り、parentに関連付けます。