NHibernateおよびCriteriaとの統合:
CriteriaまたはQueryOverで可能ですか?そうでない場合、同じクエリ内で2つの結果の結合を実現する他の方法はありますか?
NHibernateおよびCriteriaとの統合:
CriteriaまたはQueryOverで可能ですか?そうでない場合、同じクエリ内で2つの結果の結合を実現する他の方法はありますか?
直接結合を行うことはできませんが、2つの将来のクエリを実行して、結果をコードで結合することができます。
var resultSet1 = this.Session.CreateCriteria<A>().Future<A>();
var resultSet2 = this.Session.CreateCriteria<B>().Future<B>();
この後、いずれかの結果セットが列挙されると、NHibernateはデータベースに単一のクエリを発行し、複数の結果セットを返します。SQL Serverを使用していない場合、データベースは複数の結果セットをサポートしていない可能性があることに注意してください。
これは 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>();
あなたが使用することができます-
NHibernate.Criterion.Restrictions.Or(ICriterion FirstQuery,
ICriterion SecondQuery)
単一のクエリで基準として。