在nHibernate中动态设置标识字段的开启/关闭
问题描述:
我是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