nhibernate 기준은 적어도 하나의 자식 객체로 부모 객체를 쿼리하기위한 기준?

StackOverflow https://stackoverflow.com/questions/1807135

문제

내 프로젝트에서 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} 물체가 쿼리되는 자리 표시 자입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top