Pregunta

¿Cómo expresar la siguiente consulta Criteria en HQL?

var idArray = new int[] { 1, 2, 3, 4, 5 };

Session.CreateCriteria(typeof(Foo))
    .Add(Expression.In("Id", idArray)
    .List<Foo>();

Soy consciente de que hay una "en" palabra clave en HQL, pero como yo lo entiendo esa palabra clave se utiliza con subconsultas en lugar de algo así como" ... donde id en (1, 2, 3, 4, 5)" o tal. Si ese no es el caso, yo con mucho gusto aceptará correcciones.

Gracias / Erik

¿Fue útil?

Solución

Prueba esto:

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>();

Otros consejos

Esto funciona también

ICriteria sc = session.CreateCriteria(typeof(Foo));
sc.Add(Restrictions.In("id",new[] { 1, 2 }));
siteList = sc.List();
session.Close();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top