0

私はnhibernateを初めて使用しています...次のようなカスタム結果セットを返すSQLクエリ(Oracleデータベースにヒット)を作成しました...

ここに画像の説明を入力

これらの結果を次のようなカスタム オブジェクトにマッピングしようとしました... (このオブジェクトは永続オブジェクトではなく、nhibernate マッピング ファイルを含んでいません) ここに画像の説明を入力

問題は、Oracle データベースでこの SQL クエリを実行すると、4 つのレコードすべてが得られることですが、コードからこれを実行すると、1 つのレコードしか得られません (結果は 1 つのアイテムのみになります)。

私はここで何か間違ったことをしていますか?

4

2 に答える 2

0

そのID列、まあそれの欠如!NHibernateは、の一意の行が何であるかを理解できませんResultSet。したがって、NHibernateは、4つの行すべてが重複していると見なすため、第1レベルのキャッシュに1回だけデータを入力します。

2つのオプションがあります:-

  1. ビューでは、一意のIDである一意のIDを返しますが、スキーマによって判断すると、可能ではないように見えます

  2. ビューマップクラスでequalsとGetHashCodeをオーバーライドする必要があります。詳細については、このブログのここにリンクの説明を入力してください。

于 2012-08-02T16:29:13.167 に答える
0

NHibernate で sql ロギングを有効にし、実際に実行されている質問を確認します。

Transformer がデータのマッピング方法を認識できるように、プロジェクションを設定してみてください。

于 2012-08-02T13:02:41.210 に答える