3

私は次のプロパティを持っています

<property name="Allocated" type="decimal" formula="(select sum(a.AllocationAmount) from  Allocation a where  a.TransactionId = TransactionId)" />

これは、美しく機能している請求書に割り当てられたトランザクションの金額をロードします。

ただし、ほとんどの場合、この量は気にしません。この計算列を条件付きでロードする方法はありますか? または、この計算列を HQL/Critera に追加して、実行する特定のクエリの一部にする方法はありますか?

4

2 に答える 2

4

NH 3.0 では、遅延プロパティを定義できます。これは、まさにそのとおりに機能します ( http://ayende.com/Blog/archive/2010/01/27/nhibernate-new-feature-lazy-properties.aspxを参照) 。

ただし、これは、クエリまたはビューとして機能する疑似エンティティにより適しているように見えます。

于 2010-07-23T04:07:09.343 に答える
2

プロパティマッピングで指定するaccess="none"と、オブジェクトモデルからプロパティをまとめて除外できますが、hqlを使用してクエリを実行できます。詳細については、この記事を参照してください。

また、そのロジックを関数に分解し、カスタムダイアレクトに登録してから、条件apiを使用してクエリ/プロジェクトを実行することもできます(経由Projections.SqlFunction

于 2010-07-23T11:44:01.493 に答える