¿Qué es NHibernate HQL Equivalente a la palabra clave TOP de T-SQL?NHibernate HQL Equivalente a la palabra clave TOP de T-SQL
También, ¿cuál es el modo no HQL para decirme darme los primeros 15 de una clase?
¿Qué es NHibernate HQL Equivalente a la palabra clave TOP de T-SQL?NHibernate HQL Equivalente a la palabra clave TOP de T-SQL
También, ¿cuál es el modo no HQL para decirme darme los primeros 15 de una clase?
En realidad es bastante fácil en HQL:
var top15 = session.CreateQuery("from SomeEntity")
.SetFirstResult(0)
.SetMaxResults(15)
.List<SomeEntity>();
No sabe cómo hacer esto utilizando la API de criterios embargo.
los criterios del API Método:
ICriteria criteria = DaoSession.CreateCriteria(typeof(T));
criteria.SetFirstResult(StartIndex);
criteria.SetMaxResults(MaximumObjects);
return criteria.List<T>();
+1. Tendré que investigar este MaximumObjects. Muy genial. – BuddyJoe
MaximumObjects es solo una variable entera para decirle a SetMaxResults cuántos objetos debe devolver. En su caso, podría codificar 15 en su lugar, es decir, los criterios. SetMaxResults (15); –
Haha ... en otras palabras, es idéntico a CreateQuery() después de que se crea la instancia. –
Para completar, aquí es cómo hacerlo con el QueryOver
API introducido en NHibernate 3.0:
var top15 = session.QueryOver<SomeEntity>().Take(15).List();
tiro en un .Skip(someInt)
si es necesario definir una índice de inicio, por ejemplo para paginación.
mookid8000 proporciona información falsa.
no hay manera de establecer SQL TOP N con HQL :(
siempre se descarga toda la mesa para .NET y la toma del TOP, cuyo está completamente estúpidos!
De NHibernate 3.2 usted podría utilizar SKIP n/TAKE n
en HQL al final de la consulta podría ser muy útil en subconsultas donde no se puede utilizar SetMaxResults
Por ejemplo:..
select l, (select u from User u where u.Location = l order by u.Date asc take 1)
from Location l
+1. Huh eso es bastante raro. Pensé que la respuesta sería parte de la cadena HQL "tunneled". Interesante. – BuddyJoe
Esta respuesta es en realidad un híbrido de HQL y los criterios API –
sí ... básicamente es lo mismo que criterios ... simplemente reemplace con 'CreateCriteria()' –
dotjoe