2011-03-16 61 views
0

我是NHibernate/Spring的新手,我有一個查詢需要標識列在運行查詢之前關閉,然後打開。基本上,我們將記錄重新插入到日誌表中的表中,我們需要保持ID相同。在nHibernate中動態設置標識字段的開啓/關閉

當我嘗試執行「SET IDENTITY_INSERT primarykeyfield OFF」時,Hibernate說它無法執行,因爲它首先需要SELECT或INSERT。

任何想法?

回答

1

您試圖執行SQL命令作爲HQL。

使用CreateSQLQuery而不是CreateQuery

+0

我應該先執行CreateSQLQuery(SET IDENTITY OFF),然後創建另一個查詢(使用CreateQuery)來移動記錄並執行?然後使用CreateSQLQuery執行另一個語句(SET IDENTITY ON)? – osij2is 2011-03-16 02:45:39

+0

@ osij2is:是的。但是,如果您的實體使用身份生成器,您將無法使用HQL插入特定值。您也可能必須使用SQL。 – 2011-03-16 14:22:58

+1

我們的表使用本地標識生成器。是否無法關閉該ID上的身份屬性? – osij2is 2011-03-16 19:46:43

相關問題