2010-04-25 4 views
14

내 엔티티 인 UserStatus에 유형이 int 인 열거 형을 가지고 있습니다.NHibernate에서 NotEqual을 수행하는 방법

모든 사용자에게 UserStatus <> 취소를 요청하고 싶습니다. 그래서

:

Session.CreateCriteria(typeof(User)) 
.Add(Expression.Eq("UserStatus", (int)UserStatus.Cancelled) 
.UniqueResult<User>(); 

은 위의 앞과 같다, 나는 동일하지 얻을 필요가있다. 알렉스 덕분으로

답변

40

는 NH2에 대해 최대 이것을 사용 :

Session.CreateCriteria(typeof(User)) 
.Add(Restrictions.Not(Restrictions.Eq("UserStatus", (int)UserStatus.Cancelled)) 
.UniqueResult<User>(); 

오래된 버전이 될 것이다 :

Session.CreateCriteria(typeof(User)) 
.Add(Expression.Not(Expression.Eq("UserStatus", (int)UserStatus.Cancelled)) 
.UniqueResult<User>(); 
+1

는'Expression' 세미되지 않습니다. 사용을 'Restrictions'으로 바꾸십시오. – Alex

2
.Add(!Restrictions.Eq(propertyName, value)); 
+2

이것이 작동하는 이유에 대한 의견을 추가하십시오. –

+0

이 경우는 내 경우에는 [... and not (propertyName =?)]로 매핑되었고 Oracle –

관련 문제