Me gustaría ser capaz de contar la cantidad de registros devueltos en otra consulta. El uso de SQL es fácil:

select count (*) 
from  (
  select count(first_name) 
  from users 
  group by first_name) as temp

¿Alguien tiene alguna idea de cómo puedo hacer que el uso de HQL?

InformationsquelleAutor melmack | 2012-03-20

4 Comentarios

  1. 0

    Creo que no es posible en una forma genérica. HQL hace – que yo sepa – no se admiten subconsultas en la cláusula from. (Por cierto, que lo intente. Existen algunas características ocultas…)

    En este caso, la consulta sería:

    select count(distinct first_name)
    from users 

    Parece que no es posible contar con varias columnas distintas.

    Hay un característica de QueryOver (no sé si existe y cómo se llamaría en Java).

    Si necesitan desesperadamente para HQL, usted podría escribir un método y enviarlo a la comunidad …

    • Pero el problema viene cuando tengo más de una columna distinto…
  2. 0
    select count(*) from
    (
       select AUTO_ID_CUSTOMER, sum(UNIT_QTY*UNIT_PRICE)
       from V_TRANSACTIONS
       where INV_DATE > '01/01/2006'
       group by AUTO_ID_CUSTOMER
       having sum(UNIT_QTY*UNIT_PRICE) < 100000
    )
    • Eso es muy extraño respuesta a la pregunta anterior.
    • me da una descripción más acerca de HQL?
    • href=»http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html» >docs.jboss.org/hibernate/orm/3.3/reference/en/html/…
  3. 0

    Espero que ayude a alguien. Esto es válido HQL/SQL de consulta:

    SELECT COUNT(*) FROM users AS u WHERE u.id IN 
      (SELECT u2.id FROM users AS u2 GROUP BY u2.first_name);

    Seleccionar los Identificadores de filas agrupadas y, a continuación, el recuento de las filas con la identificación en esta lista.

    UPD: Rendimiento de esta consulta es muy baja.

  4. 0

    Menos tengo a tu pregunta equivocada, si la intención es sólo para encontrar el número de registros devueltos por la consulta, usted puede probar la siguiente versión:

     session.createQuery("select count(first_name) from Users
     group by first_name)").list().size();

    Tenga en cuenta que, el Usuarios en la consulta anterior es el nombre de la Entidad no se el nombre de la Tabla.

    En caso si usted está buscando para consulta HQL sintaxis es similar a la de SQL de la consulta (es decir, subselección en la cláusula from), no es compatible con Hibernate HQL como por HHH-3356

Dejar respuesta

Please enter your comment!
Please enter your name here