我對NHibernate很陌生,試圖通過ISeries提供程序連接到DB2表。該表具有自動生成爲標識的BIGINT主鍵。我已經在我的映射文件中嘗試了id的generator屬性的幾個值,並沒有取得任何成功。表DEF看起來像這樣(字段名稱改變):NHibernate - 將ID映射到DB2身份
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>
起初,我有發電機類設置爲「本地人」,其中,根據到documentation,爲DB2選擇「身份」。使用「native」或「identity」,當我將生成器類更改爲其他各種值時,我會得到「列PKID中不允許使用空值」以及各種其他錯誤。
我敢肯定,我在文檔中缺少一些小東西,但是有沒有什麼辦法可以讓NHibernate獲取DB2中一個生成標識的主鍵的下一個值,並處理它我打電話時保存()?我需要在NHibernate可以用來獲取下一個值的地方編寫一個選擇嗎?
在此先感謝。