ResultテーブルとResultAuxテーブルの間にOneToMany接続があります。Resultから一連のResultAuxオブジェクトを取得できます。その後、いくつかのResultAuxオブジェクトを設定に追加し、各設定エントリでマージを使用して変更をデータベースにフラッシュします。このような:
Set<ResultAux> resultAuxes = result.getResultAuxes();
if (resultAuxes != null) {
for (ResultAux resultAux : resultAuxes) {
resultAux = getDaoFactory().getResultAuxDAO().merge(resultAux);
}
}
私が知る必要のあるいくつかの追加のアクションについては、新しいレコードを設定してテーブルに挿入するか、古いレコードであり(変更されているかどうかに関係なく)更新されます。ResultAuxセットのすべてのエントリにすでにIDがあることに気付いたので、他のテーブルの場合のようにnullをチェックできません。そのようなことを決定する方法はありますか(できれば余分なライブラリを含まない)?
編集:
<hibernate-mapping>
<class name="ResultAux" table="RESULT_AUX">
<id name="id" column="ID">
<generator class="native" />
</id>
<property name="additinalInfoType" column="AITYPE" type="dao.hibernate.utl.AdditinalInfoEnumType" />
<property name="sorter" column="SORTER" />
<property name="value1" column="VAL1" />
<property name="value2" column="VAL2" />
<many-to-one name="result" column="RESULT_ID" class="Result" />
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="Result" table="RESULT">
<id name="id" column="ID">
<generator class="native" />
</id>
<property name="questionNumber" column="Q_NUM" />
<property name="answerNumber" column="A_NUM" />
<property name="questionGroup" column="Q_GRP" />
<property name="answerValue" column="A_VAL" />
<set name="resultAuxes" inverse="true" cascade="all-delete-orphan"
lazy="false">
<key column="RESULT_ID" />
<one-to-many class="ResultAux" />
</set>
</class>
</hibernate-mapping>