struts 1 어플리케이션에 활동 감사를 추가하려고합니다. 개체를 변경 한 다음 변경된 개체를 참조하는 행을 내 감사 테이블에 만들려고합니다. referent 객체를 변경했기 때문에 TransientObjectException이 발생합니다. 세션을 내리려고했는데 그걸 해결하지 못했고 이유가 확실하지 않습니다.struts 1이 org.hibernate.TransientObjectException을 던졌습니다.
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing
하지만 지금까지 내가에게 오전을 말할 수 : 내가 갖는
public static void addActivityAudit(String action, Merchant merchant, IMerchantUserAccount user) {
ActivityAudit activityAudit = new ActivityAudit(merchant, action, user, new Date());
activityAuditDAO.saveOrUpdate(activityAudit);
}
는 예외입니다 : ActivityAuditManager.addActivityAudit은()이다
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);
.
ETA 매핑 : 나는 cascade="all"
및 cascade="save-update"
을 시도하지 않으며 어느 쪽도
<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="save-update"
이 실제로이를 수정했습니다.