我們有一個NHibernate應用程序,我們正在從SQL Server遷移到Oracle。我們的樂觀併發是通過一個<timestamp name="Version">
映射元素實現的。NHibernate <timestamp>針對Oracle數據庫原因的映射StaleStateException
Oracle中對應的Version
列的數據類型爲DATE
。保存對象後,內存中的C#對象留有時間戳值(毫秒)(例如12:34:56.789),而數據庫中的值僅精確到秒(例如12:34:56)。因此,如果我們嘗試第二次保存對象,則會出現StaleStateException,因爲這兩個值不匹配。
我試圖通過將Version
列的數據類型更改爲TIMESTAMP(3)
來解決此問題。不幸的是,C#對象和DB值仍然偏離一毫秒(例如12:34:56.789 vs 12:34:56.788),所以第二次保存對象仍然會導致StaleStateException。
如何創建映射到類型爲DATE
或TIMESTAMP
的Oracle列的工作<timestamp>
,以便可以多次保存同一個對象?
謝謝。
- 布賴恩
我有NHibernate代碼第一。鍵入「Timestamp」會生成一個類型爲TIMESTAMP(4)的oracle字段。我怎樣才能讓它生成TIMESTAMP(7)? – 2017-03-28 13:40:16