在nHibernate中动态设置标识字段的开启/关闭

问题描述:

我是NHibernate/Spring的新手,我有一个查询需要标识列在运行查询之前关闭,然后打开。基本上,我们将记录重新插入到日志表中的表中,我们需要保持ID相同。在nHibernate中动态设置标识字段的开启/关闭

当我尝试执行“SET IDENTITY_INSERT primarykeyfield OFF”时,Hibernate说它无法执行,因为它首先需要SELECT或INSERT。

任何想法?

您试图执行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