0
我是NHibernate/Spring的新手,我有一個查詢需要標識列在運行查詢之前關閉,然後打開。基本上,我們將記錄重新插入到日誌表中的表中,我們需要保持ID相同。在nHibernate中動態設置標識字段的開啓/關閉
當我嘗試執行「SET IDENTITY_INSERT primarykeyfield OFF」時,Hibernate說它無法執行,因爲它首先需要SELECT或INSERT。
任何想法?
我是NHibernate/Spring的新手,我有一個查詢需要標識列在運行查詢之前關閉,然後打開。基本上,我們將記錄重新插入到日誌表中的表中,我們需要保持ID相同。在nHibernate中動態設置標識字段的開啓/關閉
當我嘗試執行「SET IDENTITY_INSERT primarykeyfield OFF」時,Hibernate說它無法執行,因爲它首先需要SELECT或INSERT。
任何想法?
您試圖執行SQL命令作爲HQL。
使用CreateSQLQuery
而不是CreateQuery
。
我應該先執行CreateSQLQuery(SET IDENTITY OFF),然後創建另一個查詢(使用CreateQuery)來移動記錄並執行?然後使用CreateSQLQuery執行另一個語句(SET IDENTITY ON)? – osij2is 2011-03-16 02:45:39
@ osij2is:是的。但是,如果您的實體使用身份生成器,您將無法使用HQL插入特定值。您也可能必須使用SQL。 – 2011-03-16 14:22:58
我們的表使用本地標識生成器。是否無法關閉該ID上的身份屬性? – osij2is 2011-03-16 19:46:43