我在表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>