15

私は Post クラスと Comment クラスを持っており、それらは Post がコメントのリストを持つ 1 対多の関係を持っています。コメントは親の投稿を知る必要がないため、これを Fluent NHibernate との一方向の関係としてマップするにはどうすればよいですか? 現在、これはコメントの私のマッピングです:

Id(x => x.Id);
Map(x => x.Body);
References(x => x.User);

および投稿の場合:

Id(x => x.Id);
Map(x => x.Title);
HasMany(x => x.Comments)
    .Inverse()
    .WithKeyColumn("PostId")
    .Cascade.AllDeleteOrphan();

新しく追加されたコメントで Post インスタンスを保存しようとすると、コメント (PostId) の外部キーが NULL のままになるため、これは機能しません。そしてもちろん、NULL PostId でコメントを保存することはできません。.Inverse() 句を削除しようとしましたが、それも機能しません。

4

1 に答える 1

22

外部キーに非 null 制約がある場合、Hibernate はこのマッピングをサポートしません。この制約を削除すると、NHibernate がコメントに null の PostId を挿入し、新しい投稿の ID でコメントを更新することがわかります。

次のいずれかが必要です。

  1. not-null 制約とInverse呼び出しを削除する
  2. 制約を維持し、関係の反対側をマッピングします (これを双方向の関係にし、Inverse正しく機能できるようにします)

これについては、1 対多の NHibernate のドキュメントで説明されています。最後の非常に重要な注意事項を参照してください。

于 2009-02-17T22:28:42.567 に答える