1

StatelessSessionを使用してエンティティを一括更新しようとしています。

ステートレスであるため、NHibernateは保存時に子エンティティを自動カスケードしません。

子エンティティに変更を加えたくないので、これは問題ありません。

残念ながら、保存すると、NHibernateは次のように不平を言います。

"オブジェクトは保存されていない一時インスタンスを参照します-フラッシュする前に一時インスタンスを保存します。タイプ:MyAssembly.MyRandomEntity、エンティティ:Castle.Proxies.MyRandomEntityProxy"

もちろん、子エンティティを更新しようとすると、次のエラーが発生します。

「次の永続機能はありません:Castle.Proxies.MyRandomEntityProxy」

ご覧のとおり、子エンティティはロードされていないため、プロキシです。必要ない、更新したくない…でも、更新してもどうしたらいいのかわからない。

基本的に一時的な子エンティティを無視するように指示して、この問題を解決する方法はありますか?

アップデート

親オブジェクトの子エンティティのマッピングは次のとおりです。

<many-to-one class="MyAssembly.Flight, MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" name="OutboundFlight">
  <column name="OutboundFlightId" />
</many-to-one>

子エンティティのId列は次のとおりです。

<id name="Id" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" unsaved-value="0">
  <column name="FlightId" />
  <generator class="assigned" />
</id>
4

1 に答える 1

1

インスタンスが永続的であるか一時的であるかを知るために「unsavedvalue」を使用する割り当てられたジェネレーターを使用します。たぶん、データベースにid = 0のFlightobjectが本当にあるのでしょうか?次に、Id = 0のプロキシとして作成され、一時的なインスタンスとして扱われます。

于 2011-09-05T13:59:21.793 に答える