2011-08-03 9 views
0

私はHibernateで永続化しているクラスを持っています。これは、バッグの中に保存され、以下のように、そのIDを生成するシーケンスジェネレータを使用している:子供のステータスプロパティを変更すると、新しい子レコードではなく、古いものが更新されるので挿入されるべきHibernateのUPDATEの代わりにINSERT

<class name="Parent"> 
    <id name="id" /> 
    <bag name="children" access="field"> 
    <key column="parent_id" not-null="true" /> 
    <one-to-many class="Child" /> 
    </bag> 
</class> 

<class name="Child"> 
    <id name="id"> 
    <generator class="sequence"> 
     <param name="sequence">child_seq</param> 
    </generator> 
    </id> 

    <many-to-one name="status" not-null="true" cascade="none" /> 
</class> 

。ただし、Hibernate UPDATE。 HibernateにINSERTするかどうかを伝える方法はありますか?それとも、私はバッグの外で自分自身でそれを管理する必要がありますか?

+1

これは、あなたが休止状態を使用している方法が混乱しているように思えます。 'Parent.children.size()'が表の行数と異なるようにしますか?なぜ新しいChildインスタンスをバッグに追加するだけではないのですか? –

答えて

0

私はコレクションに子オブジェクトを手動で追加する必要があると思います。休止状態では、各エンティティはテーブル内の行に関連しているため、通常の方法です。新しい行を追加するには、新しい子をコレクションに追加する必要があります。