2017-05-19 38 views
0

我使用NHibernate 4NHibernate的,刷新修飾的對象拋出AssertionFailure {NULL}標識符

我想實現,其允許以刷新一個修改的對象的函數。 我的對象包含一個ID,並具有關聯的一個一對多與ID2廣告串

在我的聯想,我插入新的對象關聯的對象,所以ID2爲null,因爲它通過hilow發生器產生時保存主數據庫中的對象。

所以,當我會刷新重新加載原始對象,我有一個assertion failure (null identifier)當有與ID = null一個新的對象(通常它好吧,當我saveOrUpdate。 我把notFound = ignore在我的映射,但沒有效果沒問題當執行。

請給我解決我的問題的方法

預先感謝您。

+1

請用一些代碼編輯你的問題,謝謝! –

回答

0

在我的聯想,我插入一個新的OBJ ect關聯,所以ID2爲空,因爲它在將主對象保存在數據庫中時由hilow生成器生成。

這裏有一些不準確的說法。在將對象插入數據庫之前,hilo生成器策略會生成標識。它在Save上執行,沒有Save實際上將實體插入數據庫,直到會話刷新。

如果您的ID保持爲null,這很可能是因爲您尚未在會話中保留實體。在它上面調用Save,你的ID不會再是null,而實體將不會在數據庫中,除非你刷新了會話(或者將發生器策略更改爲需要立即插入的策略,如identity)。

現在刷新數據庫中尚未存在的對象看起來對我來說是一個錯誤。你對這樣的操作有什麼期望?

not-found="ignore"不適用於處理不存在的實體的刷新。它允許忽略數據庫中無效的外鍵。

+0

好的,謝謝你的幫助。我期望用良好的timeqtamp從數據庫重新加載我的主對象,因爲刷新表明我的對象自從加載後被另一個用戶保存。 – Christ121212

+0

我不想停止應用程序,但刷新對象。 – Christ121212

+0

我很失望,因爲我沒有找到這種情況的通用代碼:保存與樂觀主義交易和時間戳是舊的。 – Christ121212