HBMで定義されたとき、怠惰= falseのはsetFetchMode(レイジー)とNHibernateはICriteriaクエリを実行するには?
-
26-09-2019 - |
質問
私は怠惰な多対一の関連付けの基準クエリを実行したいと思います。これらの団体は、HBMでlazy="false"
として設定されています。我々はプロジェクトの熱心90%を、それを使用しているためにです。
しかしlazy="proxy"
として実行する必要がありますいくつかの「大きな」クエリがあります。
HBMます:
<many-to-one name="DestinationElement" class="X" column="DstElemId" not-null="true" unique="false" cascade="save-update" outer-join="auto" fetch="select" lazy="false" index="IDX_Ass_DestElem">
基準の設定:
criteria.SetFetchMode("DestinationElement", FetchMode.Lazy);
これは、反対の方法ではなく、このように動作します。それは熱心にフェッチます。
LOCは20K +であり、それを逆の方法を行うための大規模なリファクタリングになると思います。
どのように私は私がしたいときにだけ遅延しフェッチするために、これを強制することができ、かつ熱心に他の全ての時間を取得しますか?
事前に感謝します!
解決
lazy="false"
HBMに(時間の99%は悪い考えであることに加えて)、クエリでオーバーライドすることはできません。
あなたはあなたのコードを変更する必要があります。
所属していません StackOverflow