私はNHibernateに慣れていないので、ISeriesプロバイダーを介してDB2テーブルに接続しようとしています。テーブルには、ID として自動生成される BIGINT 主キーがあります。マッピング ファイルの id の generator プロパティにいくつかの値を試しましたが、成功しませんでした。テーブル定義は次のようになります (フィールド名が変更されています)。
CREATE TABLE SCHEMA/TABLE (
PKID BIGINT GENERATED ALWAYS AS IDENTITY (
START WITH 1 INCREMENT BY 1
NO MINVALUE NO MAXVALUE
NO CYCLE NO ORDER
CACHE 20)
,
SOMESTRING VARCHAR(50) CCSID 37 DEFAULT NULL,
FIRSTFK BIGINT NOT NULL,
SECONDFK BIGINT DEFAULT NULL,
ANOTHERSTRING VARCHAR(100) CCSID 37 DEFAULT NULL,
CONSTRAINT NISDEV/PK_TABLE PRIMARY KEY (PKID));
マッピング ファイルは次のようになります。
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Project.Domain.Thing, Project" table="TABLE">
<id name="ID" column="PKID" type="Int64">
<generator class="**???????**" />
</id>
<property name="SomeString" column="SOMESTRING" />
<property name="FirstFK" column="FIRSTFK"/>
<property name="SecondFK" column="SECONDFK"/>
<property name="AnotherString" column="ANOTHERSTRING"/>
</class>
</hibernate-mapping>
最初に、ジェネレーター クラスを「ネイティブ」に設定しました。これは、ドキュメントによると、 DB2 の「ID」を選択します。「ネイティブ」または「ID」を使用すると、ジェネレーター クラスを他のさまざまな値に変更すると、「列 PKID で許可されていない Null 値」やその他のさまざまなエラーが発生します。
ドキュメントに欠けている小さなものがあると確信していますが、DB2 の GENERATED IDENTITY である主キーの次の値を NHibernate に取得させ、呼び出し時にそれを処理させる方法はありますか?保存()?NHibernate が次の値を取得するために使用できる select をどこかに書く必要がありますか?
前もって感謝します。