2012-08-30 36 views
0

我想將活動審計添加到我的struts 1應用程序。我更改了一個對象,然後我想在審計表中創建一個引用已更改對象的行。我得到了TransientObjectException,因爲我改變了對象對象。我試着刷新會話,但沒有解決它,我不知道爲什麼。struts 1引發org.hibernate.TransientObjectException

merchant.setTrusted(false); 
merchantDAO.saveOrUpdate(merchant); 
// trying to resolve org.hibernate.PropertyValueException: not-null property references a null or transient value: com.rc.model.ActivityAudit.user 
SessionManagerFactory.getSessionManager(DatasourceType.M).getSession().flush(); 

ActivityAuditManager.addActivityAudit("Set merchant to untrusted", merchant, userAccount); 

其中ActivityAuditManager.addActivityAudit()是:

public static void addActivityAudit(String action, Merchant merchant, IMerchantUserAccount user) { 
    ActivityAudit activityAudit = new ActivityAudit(merchant, action, user, new Date()); 
    activityAuditDAO.saveOrUpdate(activityAudit); 
} 

我得到的例外是:

org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing 

但據我可以告訴我上午

ETA映射:

<class name="com.rc.model.ActivityAudit" table="activity_audit" discriminator-value="0"> 
... 
    <many-to-one name="merchant" class="com.rc.model.Merchant" 
       column="merchantid" unique="false" not-null="true" cascade="none"/> 
... 

我試圖cascade="all"cascade="save-update"既不提高的情況。

ETA:看到我自己的答案,但是,cascade="save-update"實際上確實解決了它。

回答