2011-12-06 13 views
2

私はこのQueryOverを使用してソート可能なグリッドのためのクエリを書いていますが、コレクションに参加します同じ テーブルへの複数の結合の理由。このクエリを実行するNHibernateのQueryOverは二回

は、この例外を生成します。

NHibernate.QueryException: duplicate association path: Employees ---> 
System.ArgumentException: An item with the same key has already been 
added. 
    at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue 
value, Boolean add) 
    at NHibernate.Util.LinkedHashMap`2.Add(TKey key, TValue value) 
    at 
NHibernate.Loader.Criteria.CriteriaQueryTranslator.CreateAssociationPathCri teriaMap() 

私はHQLでこれをやっについての記事を見ていると、この を言う数は、現在の基準のAPIではサポートされていません。

これは間違いありませんか? HQLはコレクションに2回参加する唯一の方法ですか?

私はこれをQueryOverで行うことはできますか? (また、2つの結合を使用するよりも を行うより良い方法はありますか?)

ありがとうございます。

+0

こんにちは、 私はあなたがまだその問題 [リンク](http://stackoverflow.com/questions/8118863/nhibernate-multiple-joinを持っている場合は、あなたが見ることができ、同じ問題で他のスレッドで私のanswearを掲載同じテーブルごとの異なるキー/ 10104467#10104467) – Mariusz

答えて

0

はいこれは私が以前ヒットした制限です。

私は最近同様の問題を抱えていて、TransformerでQueryOverとカスタムプロジェクションを使用したいと考えていました。私はLEFT OUTER JOINを実行することによって解決することができました。外側の表のcase..then..else式を使用してGROUP BYを使用して、結果をDTOへの変換のために必要な単一の行に戻し合います。しかし、私はこのアプローチがDTOで作業している場合にのみ有用であると考えています。

関連する問題