Я новичок в NHibernate и пытаюсь подключиться к таблице DB2 через провайдера ISeries. Таблица имеет первичный ключ BIGINT, который автоматически генерируется как личность. Я пробовал несколько значений для свойства генератора идентификатора в моем файле отображения, но не увенчался успехом. Таблица def выглядит так (имена полей изменены):
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>
Сначала у меня был установлен класс генератора "native", который, согласно документации 1008 *, выбирает "идентичность" для DB2. При использовании «native» или «identity» я получаю «значения NULL, недопустимые в столбце PKID» и другие различные ошибки, когда я изменяю класс генератора на различные другие значения.
Я уверен, что в документации мне чего-то не хватает, но есть ли способ заставить NHibernate подобрать следующее значение первичного ключа, являющегося GENERATED IDENTITY в DB2, и обработать его для меня когда я вызываю Save ()? Нужно ли где-нибудь написать выборку, которую NHibernate может использовать для получения следующего значения?
Заранее спасибо.