質問

NHibernate を使用して、いくつかの新しいオブジェクトを Firebird データベースに挿入しようとしています。

「次のシーケンス値を取得できませんでした[SQL:SQL は使用できません]"

現在使用しているマッピングは次のとおりです。注: ANML_EVNT は、使用するジェネレーターの名前です。

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


    </id>
役に立ちましたか?

解決

それでも答えを探している場合は、私がそれをうまく使用した方法をここに示します。

私が「ネイティブ」ジェネレーターを使用しているのは、プログラムに SQL Server のサポートを追加するときに、NHibernate で変更する必要があったのはジェネレーターの種類を「ネイティブ」に変更するだけだったためです。これは、Firebird と SQL Server の「自動インクリメント ID」列の実装方法が異なるためです。Firebird では名前付きジェネレーターが使用され、SQL Server では "sequence" パラメーターを無視して組み込みの自動インクリメントが使用されます。

私が話していることの例は次のとおりです。

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

そうは言っても、gcores が回答したように、構成で間違っているように見えるのは、ANML_EVNT の後の余分な ">" だけです。

他のヒント

これで問題ありません。問題は、ANML_EVNTの後の終了ブラケットではありませんよね?

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


</id>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top