nhibernate 기준은 적어도 하나의 자식 객체로 부모 객체를 쿼리하기위한 기준?
-
05-07-2019 - |
문제
내 프로젝트에서 Lines
그룹화 할 수 있습니다 Group
유형이있을 수 있습니다 Crossing
(1) 또는 Parallel
(2). 지정된 유형의 하나 이상의 그룹을 가진 모든 줄 (이 경우 1)을 찾아야합니다. 주어진 줄의 ID는 열에있을 수 있습니다. LineA
또는 LineB
그룹의. 지금까지 내가 얻은 곳은 다음과 같습니다.
Criteria crit = session.CreateCriteria(typeof(Line), "ln");
DetachedCriteria count = DetachedCriteria.For<Group>()
.SetProjection(Projections.CountDistinct("Id"))
.Add(Expression.Or(
Expression.EqProperty("LineA", "ln.Id"),
Expression.EqProperty("LineB", "ln.Id")))
.Add(Expression.Eq("GroupTypeId", 1));
crit.Add(Subqueries.Gt(0, count));
해결책
나는 그것을 작동시켰다!
crit.Add(Expression.Sql(
"EXISTS(select 1 from Group" +
"WHERE ({alias}.Id=LineA OR {alias}.Id=LineB)"+
"AND GroupTypeId = ?)", (int) type, NHibernateUtil.Int32));
{alias}
물체가 쿼리되는 자리 표시 자입니다.
제휴하지 않습니다 StackOverflow