问题补充:我new 一个MDCheck ,但我saveOrUpdate时出错 2011-1-28 11:21:57 org.hibernate.event.def.AbstractFlushingEventListener performExecutions 严重: Could not synchronize database state with session org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect):其中ManagerCheck 和MDCheck中都有一个TimeStamp属性
2011-1-28 11:21:57 org.hibernate.event.def.AbstractFlushingEventListener performExecutions
严重: Could not synchronize database state with session
org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect):其中ManagerCheck 和MDCheck中都有一个TimeStamp属性
<id name="checkId" column="app_id">
<generator class="foreign">
<param name="property">appForm</param>
</generator>
</id>
<one-to-one name="appForm" lazy="false"
constrained="true"/>
<many-to-one name="state" class="FormState" lazy="false">
<column name="state_id" />
</many-to-one>
<property name="curLv" type="java.lang.Integer">
<column name="curLv" />
</property>
<property name="reworkReason" type="java.lang.String">
<column name="reason" />
</property>
<property name="lv" type="java.lang.Integer">
<column name="Lv" />
</property>
<property name="lastProccess" type="java.lang.Integer">
<column name="lastProccess" />
</property>
<joined-subclass name="ManagerCheck" table="t_mgrCheck">
<key column ="app_id"/>
<property name="reason" type="java.lang.String" column="reason"></property>
<property name="time" type="java.sql.Timestamp" column="check_time"></property>
<!-- 映射和Operation之间的关联关系 -->
<many-to-one name="operate" column="operate_id"
class="Operation" lazy="false"/>
</joined-subclass>
<joined-subclass name="ManagerDirectorCheck" table="t_mdCheck">
<key column="app_id"/>
<property name="reason" type="java.lang.String" column="reason"/>
<property name="time" type="java.sql.Timestamp" column="check_time"></property>
<!-- 映射和Operation之间的关联关系 -->
<many-to-one name="operate" column="operate_id"
class="Operation" lazy="false"/>
</joined-subclass>
<joined-subclass name="MDDirectorCheck" table="t_mddCheck">
<key column="app_id"/>
<property name="reason" type="java.lang.String" column="reason"/>
<property name="time" type="java.sql.Timestamp" column="check_time"></property>
<!-- 映射和Operation之间的关联关系 -->
<many-to-one name="operate" column="operate_id"
class="Operation" lazy="false"/>
</joined-subclass>
<joined-subclass name="PCDirectorCheck" table="t_pcdCheck">
<key column="app_id"/>
<property name="reason" type="java.lang.String" column="reason"/>
<property name="time" type="java.sql.Timestamp" column="check_time"></property>
<!-- 映射和Operation之间的关联关系 -->
<many-to-one name="operate" column="operate_id"
class="Operation" lazy="false"/>
</joined-subclass>
</class>
ManagerCheck mcheck=(ManagerCheck)mcheckDao.get(AppId)
if(mcheck!=null)
{
mcheck.setOperate(operate);
mcheck.setReason(reason);
mcheck.setTime(new Timestamp(System.currentTimeMillis()));
mcheck.setCurLv(MANAGERDIRECTOR_LV);
mcheckDao.saveOrupdate(mcheck);
ManagerDirectorCheck mdCheck=new ManagerDirectorCheck(check);
mdCheck.setTime(mcheck.getTime());
mdcheckDao.saveOrupdate(mdCheck);
}