功能实现是:最开始进入页面的时候先保存模板信息,然后刷新页面,会弹出模板项目的填写框,填写完模板项目后再点保存,执行模板信息的更新和模板项目的保存。但现在出现的问题是:我在后台debug记录中看到在执行模板信息表的保存时(此时已经保存过了模板表),是先select了mbxx的id,然后再执行两条update,分别update了mbxx和mbxxxm表,但令我困惑的是为什么不是update模板表、insert模板项目表呢?现在这样执行模板项目表中根本没有记录 在action中保存时用到的是hibernate的saveOrUpdate方法。两张表关联关系如下:
模板表:
<hibernate-mapping>
    <class name="com.ecomm.zhyw.jjrzbgl.jjrrwmb.pojo.Mbxx" table="ZHYW_JJRZBGL_MBXX">
<!-- ID -->
<id name="id" type="java.lang.String">
<column name="ID" length="32"></column>
<generator class="uuid.hex" /> 
</id><!-- 创建单位 -->
<property name="v_mbcjdw" type="java.lang.String">
<column name="V_MBCJDW" length="200"></column>
</property><!-- 创建人 -->
<property name="v_mbcjr" type="java.lang.String">
<column name="V_MBCJR" length="200"></column>
</property><!-- 创建日期 -->
<property name="d_mbcjrq" type="java.util.Date">
<column name="D_MBCJRQ"></column>
</property><!-- 任务标题 -->
<property name="v_rwbt" type="java.lang.String">
<column name="V_RWBT" length="200"></column>
</property><!-- 模板项目 -->
<list name="xms" cascade="save-update" inverse="true" lazy="true">
<key column="V_XMMB" not-null="true"/>
<index column="position"></index>
<one-to-many class="com.ecomm.zhyw.jjrzbgl.jjrrwmb.pojo.Mbxxxm"/>
</list>
    </class>
</hibernate-mapping>模板项目表:
<hibernate-mapping>
    <class name="com.ecomm.zhyw.jjrzbgl.jjrrwmb.pojo.Mbxxxm" table="ZHYW_JJRZBGL_MBXXXM">
<!-- ID -->
<id name="id" type="java.lang.String">
<column name="ID" length="32"></column>
<generator class="uuid.hex" /> 
</id><!-- 上级项目id -->
<property name="v_parentid" type="java.lang.String">
<column name="V_PARENTID" length="200"></column>
</property><!-- 项目标题 -->
<property name="v_xmmc" type="java.lang.String">
<column name="V_XMMC" length="200"></column>
</property><!-- 项目单位 -->
<property name="v_xmdw" type="java.lang.String">
<column name="V_XMDW" length="50"></column>
</property><!-- 备注 -->
<property name="v_xmbz" type="java.lang.String">
<column name="V_XMBZ" length="200"></column>
</property><!-- 所属模板 -->
<many-to-one name="mbxx" class="com.ecomm.zhyw.jjrzbgl.jjrrwmb.pojo.Mbxx" 
cascade="all" outer-join="auto" update="true" insert="true">
<column name="V_XMMB" length="200" ></column>
</many-to-one>
    </class>
</hibernate-mapping> 第三次发帖了,希望有大虾解答!hibernateinsertsaveOrUpdate

解决方案 »

  1.   

    改了下hibernate配置,现在开始查询模板项目表了,但仍无法插入,只能更新:Hibernate: select mbxx0_.ID as ID126_0_, mbxx0_.V_MBCJDW as V2_126_0_, mbxx0_.V_MBCJR as V3_126_0_, mbxx0_.D_MBCJRQ as D4_126_0_, mbxx0_.V_RWBT as V5_126_0_ from ZHYW_JJRZBGL_MBXX mbxx0_ where mbxx0_.ID=?
    Hibernate: select xms0_.v_xmmb as v6_1_, xms0_.ID as ID1_, xms0_.ID as ID127_0_, xms0_.V_PARENTID as V2_127_0_, xms0_.V_XMMC as V3_127_0_, xms0_.V_XMDW as V4_127_0_, xms0_.V_XMBZ as V5_127_0_, xms0_.V_XMMB as V6_127_0_ from ZHYW_JJRZBGL_MBXXXM xms0_ where xms0_.v_xmmb=?
    Hibernate: update ZHYW_JJRZBGL_MBXX set V_MBCJDW=?, V_MBCJR=?, D_MBCJRQ=?, V_RWBT=? where ID=?
    Hibernate: update ZHYW_JJRZBGL_MBXXXM set V_PARENTID=?, V_XMMC=?, V_XMDW=?, V_XMBZ=?, V_XMMB=? where ID=?
    Hibernate: update ZHYW_JJRZBGL_MBXXXM set v_xmmb=null where v_xmmb=?
    Hibernate: update ZHYW_JJRZBGL_MBXXXM set v_xmmb=? where ID=?