4

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で使用しています。

4

0 に答える 0