0
を登録しようあなたの実体を知らなくても答えることは困難ですNHibernateは複数の条件は
select a.ID, count(b.ID)
from appusers a
left join weeklytasks b on a.ID = b.TaskOwner and b.taskstatus = 1
group by a.ID
を登録しようあなたの実体を知らなくても答えることは困難ですNHibernateは複数の条件は
select a.ID, count(b.ID)
from appusers a
left join weeklytasks b on a.ID = b.TaskOwner and b.taskstatus = 1
group by a.ID
に、このSQLクエリを変換するいくつかの助けを必要としてください、マッピング、(ICreteriaのAPI、QueryOver、LINQの)技術を使用していました。
しかし、私はQueryOverを使用して、このソリューションを提案することができます。
AppUser ownerAlias = null;
WeeklyTask taskAlias = null;
var result = Session.QueryOver(() => taskAlias)
.JoinAlias(x => x.TaskOwner,
() => ownerAlias,
NHibernate.SqlCommand.JoinType.RightOuterJoin,
Restrictions.Where(() => taskAlias.Status == 1))
.SelectList(list => list
.SelectGroup(x => ownerAlias.Id)
.SelectCount(x => x.Id))
.List<object[]>();
またはこの:
var result = Session.QueryOver<WeeklyTask>()
.Where(x => x.Status == 1)
.Right.JoinQueryOver(x => x.TaskOwner)
.SelectList(list => list
.SelectGroup(x => x.TaskOwner.Id)
.SelectCount(x => x.Id))
.List<object[]>();
このアプローチでは、あなたのWeeklyTask
エンティティ必見AppUser
エンティティにマッピングされた参照が含まれていることに注意してください。
ありがとう、最初のQueryOverは完全に機能しました –