nhibernate : criteria expression.in ()와 동등한 HQL?
-
22-08-2019 - |
문제
HQL에서 다음 기준 쿼리를 어떻게 표현 하시겠습니까?
var idArray = new int[] { 1, 2, 3, 4, 5 };
Session.CreateCriteria(typeof(Foo))
.Add(Expression.In("Id", idArray)
.List<Foo>();
HQL에는 "In"키워드가 있다는 것을 알고 있지만, 이해할 수 있듯이 키워드는 "... (1, 2, 3, 4, 5)와 같은 것보다 하위 쿼리와 함께 사용하는 것입니다. 또는 그런. 그렇지 않다면, 나는 수정을 기꺼이 받아 들일 것입니다.
감사합니다 /Erik
해결책
이 시도:
var idArray = new int[] { 1, 2, 3, 4, 5 };
var foos = Session
.CreateQuery("from Foo f where f.Id in (:ids)")
.SetParameterList("ids", idArray)
.List<Foo>();
다른 팁
이것도 작동합니다
ICriteria sc = session.CreateCriteria(typeof(Foo));
sc.Add(Restrictions.In("id",new[] { 1, 2 }));
siteList = sc.List();
session.Close();
제휴하지 않습니다 StackOverflow