카테고리 없음

[c#] nHibernate에서 조인 필터링

행복을전해요 2021. 1. 6. 12:54

나는 그것이 OperationType엔티티 클래스 (열거 형이 아님) 라고 가정합니다 . In엔티티 목록과 함께 사용할 수 없습니다 . 아이디를 사용하여 가입 할 수 있습니다.

criteria
  .CreateCriteria("Operation")
    // add other expressions
      .CreateCriteria("OperationTypes", "operationTypes", JoinType.LeftOuterJoin)
        .Add(Expression.In("operationTypes.Id", operationTypeId))
        

_session.Get (id)가 데이터베이스 쿼리를 수행한다고 가정합니다. 어쨌든 이것을 피해야합니다.

추신 : OperationType이 <composite-element>태그가 있는 복합 컬렉션으로 매핑 된 경우 불행히도 기준과 결합 할 수 없습니다. 해결 방법이 있는지 잘 모르겠습니다. 그러나 보류중인 패치가 있습니다.

-------------------

글을 쓰는 것보다 더 좋은 방법이 있다고 생각합니다.

criteria
  .CreateCriteria("Operation")
    // add other expressions
      .CreateCriteria("OperationTypes", "operationTypes", JoinType.LeftOuterJoin)
        .Add(Expression.In("operationTypes.Id", operationTypeId))
        

추가 조인이 수행되기 때문에 "Operation"

다음과 같이 간단히 작성할 수 있습니다.

criteria.Add(Expression.In("OperationTypes", operationTypeId))
.CreateCriteria("Operation")
                        .Add(Expression.Eq("IsPublished", true))
                                                .Add(Expression.Eq("IsActive", true))
                                                                        .Add(Expression.Le("AdvertisingStartDate", DateTime.Now))
                                                                                                .Add(Expression.Ge("AdvertisingEndDate", DateTime.Now))
                                                                                                                        .SetResultTransformer(new DistinctRootEntityResultTransformer())
                                                                                                                        


출처
https://stackoverflow.com/questions/2005831