【问题标题】:How do I generate ids with NHibernate and Firebird?如何使用 NHibernate 和 Firebird 生成 id?
【发布时间】:2009-01-05 23:21:42
【问题描述】:

我正在尝试使用 NHibernate 将一些新对象插入到 firebird 数据库中。

我收到错误“无法获取下一个序列值[SQL:SQL 不可用]”

这是我目前使用的映射。注意 ANML_EVNT 是我要使用的生成器的名称。

    <id name="Id" column="ID" type="integer">
        <generator class="sequence">
            <param name="sequence">ANML_EVNT></param>   
        </generator>


    </id>

【问题讨论】:

    标签: nhibernate insert firebird generator


    【解决方案1】:

    如果您仍在寻找答案,这里是我成功使用它的方法。

    我使用“本机”生成器,因为在向我们的程序添加对 SQL Server 的支持时,我在 NHibernate 中唯一需要更改的是生成器类型为“本机”,因为 Firebird 和 SQL Server 实现了它们的“自动递增标识”列不同。在 Firebird 中,它使用命名生成器,而在 SQL Server 中,它忽略“sequence”参数并使用内置的自动增量。

    这是我正在谈论的示例:

    <id name="Id" column="ID">
       <generator class="native">
          <param name="sequence">ANML_EVNT</param>
       </generator>
    </id>
    

    话虽如此,正如 gcores 所回答的那样,您的配置似乎有问题的是 ANML_EVNT 之后的额外“>”。

    【讨论】:

      【解决方案2】:

      看起来不错。问题不在于 ANML_EVNT 之后的结束括号,对吧?

       <id name="Id" column="ID" type="integer">
            <generator class="sequence">
                <param name="sequence">ANML_EVNT</param>       
            </generator>
      
      
      </id>
      

      【讨论】:

      • 我不太确定你的意思......你有什么建议我可以尝试的另一种方法吗?
      • 在您的示例中,ANML_EVNT @gcores 将其删除后有一个额外的括号
      • @gcores 你能跳到这里stackoverflow.com/questions/48559427/… 帮我解决类似的问题吗?
      猜你喜欢
      • 2011-09-16
      • 2016-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多