null にできる外部キーが必要です。子には親が 0 個または 1 個あります。
Hibernate は常にForeign key reference target does not exist
. 私がやりたいことをすることさえ不可能ですか?
子:
References( x => x.Parent ).Column("PARENT_ID").Cascade.SaveUpdate().Nullable().NotFound.Ignore();
親:
HasMany(x => x.Structures).KeyColumn("PARENT_ID").Cascade.SaveUpdate().Inverse().KeyNullable().NotFound.Ignore();
子用に生成された XML:
<many-to-one cascade="save-update" class="..." name="..." not-found="ignore">
<column name="PARENT_ID" not-null="false">
</many-to-one>
親の場合:
<bag cascade="save-update" inverse="true" name="...">
<key not-null="false">
<column name="PARENT_ID" />
</key>
<one-to-many class="..." not-found="ignore" />
</bag>
ログ出力
INSERT INTO CHILD (..., PARENT_ID, ..) VALUES (..., @p1, ...)
Parameters: Name:@p1 Type:BigInt Used Value:False
とにかく、親IDがブール値になる方法はわかりませんが、これは問題ではなく、値の内部表現にすぎないと思いますか? 構文例外はスローされません。
DB ツールでは、クエリが実行され、データが挿入されます。
私はNHibernate 3.3.3.40000、FluentNHibernate 1.3.0.733をデータベースとしてFirebirdとADO.NETプロバイダー3.0.2.1で使用しています。