나는 그것이 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