1

NHibernateおよびCriteriaとの統合:

CriteriaまたはQueryOverで可能ですか?そうでない場合、同じクエリ内で2つの結果の結合を実現する他の方法はありますか?

4

3 に答える 3

6

直接結合を行うことはできませんが、2つの将来のクエリを実行して、結果をコードで結合することができます。

var resultSet1 = this.Session.CreateCriteria<A>().Future<A>();
var resultSet2 = this.Session.CreateCriteria<B>().Future<B>();

この後、いずれかの結果セットが列挙されると、NHibernateはデータベースに単一のクエリを発行し、複数の結果セットを返します。SQL Serverを使用していない場合、データベースは複数の結果セットをサポートしていない可能性があることに注意してください。

于 2011-12-21T22:57:32.347 に答える
6

これは HQL を使用しても不可能です。この他のSO投稿を参照してください

1 つの方法は、生の SQL に戻り、名前付きクエリを使用することです。

<sql-query name="MyQuery">
<![CDATA[
select col1,col2 from table1
union
select col1,colA from table2
]]>
</sql-query>

AliasToBeanResultTransformer を使用して、DTO/POCO に変換します。

var query = Session
  .GetNamedQuery("MyQuery")
  .SetResultTransformer(new AliasToBeanResultTransformer(typeof(MyDto)));
  return query.List<MyDto>();
于 2011-12-21T14:24:39.653 に答える
3

あなたが使用することができます-

NHibernate.Criterion.Restrictions.Or(ICriterion FirstQuery,
                                     ICriterion SecondQuery)

単一のクエリで基準として。

于 2011-12-21T15:39:57.120 に答える