【问题标题】:Dynamically set identity field on/off in nHibernate在 nHibernate 中动态设置身份字段开/关
【发布时间】:2011-03-16 02:06:59
【问题描述】:

我是 NHibernate/Spring 的新手,我有一个查询要求在运行查询之前关闭标识列,然后再打开。基本上,我们将记录从日志表重新插入到表中,并且我们需要保持 ID 相同。

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

有什么想法吗?

【问题讨论】:

    标签: sql nhibernate spring.net ddl


    【解决方案1】:

    您正试图以 HQL 的形式执行 SQL 命令。

    使用CreateSQLQuery 代替CreateQuery

    【讨论】:

    • 我是否应该先执行 CreateSQLQuery(SET IDENTITY OFF),然后再创建另一个查询(使用 CreateQuery)来移动记录并执行?然后使用 CreateSQLQuery 执行另一个语句(SET IDENTITY ON)?
    • @osij2is:是的。但是,如果您的实体使用身份生成器,您将无法使用 HQL 插入特定值。您可能也必须为此使用 SQL。
    • 我们的表正在使用本机身份生成器。是否无法关闭/打开该 Id 上的身份属性?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    相关资源
    最近更新 更多