Querydsl: JPA fetchCount() y grupo al no funcionar

Creado en 19 oct. 2015  ·  8Comentarios  ·  Fuente: querydsl/querydsl

Este es un error resultante de esta publicación en Grupos de Google (ver https://groups.google.com/forum/#!topic/querydsl/WH582YIY98I):

Encontré un problema extraño con un grupo bastante complejo por consulta cuando se trata de contar el número de filas que se devolverán para la consulta: la consulta HQL creada contiene una cláusula que tiene (que es correcta), pero omite la cláusula group by ( lo cual no es correcto y conduce a una excepción, afirmando que el haber se encontró sin agrupar por). Depuré el problema y encontré este código en JPQLSerializer.serialize():

    // group by
    if (!groupBy.isEmpty() && !forCountRow) {
        append(GROUP_BY).handle(COMMA, groupBy);
    }

    // having
    if (having != null) {
        append(HAVING).handle(having);
    }

Mi deseo sería que funcionara una consulta de conteo con grupo por + tener, porque tengo un caso de uso en el que necesito exactamente eso. Si eso no funciona, al menos la parte que tiene debe omitirse cuando se llama a fetchCount().

Gracias de antemano (por corregir este error) y gracias por QueryDSL en general, ¡que es realmente increíble!

jpa progress

Comentario más útil

Tiene lo mismo, no lo arregló en 4.1.4

Todos 8 comentarios

¿Alguna actualización sobre este tema?

Tiene lo mismo, no lo arregló en 4.1.4

También puedo confirmar que esto está presente al menos hasta 3.7.4

.groupBy().count() está tratando de insertar un valor nulo en una primitiva long .

la solución alternativa es usar .groupBy(element).singleResult(element.count()) que devuelve el objeto Long y se fusiona en el código hasta que se corrige el error.

También estoy enfrentando este problema, usando la versión 4.2.1. Mi consulta tiene varias expresiones en la cláusula groupBy() y singleResult() ya no está disponible en QueryDSL 4. ¿Alguna idea sobre cómo aplicar la solución anterior al hacer .groupBy(element1, element2, ...) ?

También todavía me encuentro con esto desafortunadamente. ¿Alguien encontró una solución alternativa?
(Aparte de tener que usar JPA nativo)

Todavía generó el mismo error en 4.2.1
@svenpanko señaló exactamente, así que eliminé todas las expresiones que tenían...
Incluso lo necesita, cambie el sql nativo temporalmente.

¿Algún progreso en esto? Han pasado 5 años...

Sí, lo dejaremos obsoleto o lo eliminaremos por completo para JPA: https://github.com/querydsl/querydsl/pull/2605 . El cálculo recurrirá a una implementación en la memoria, ya que simplemente no se puede hacer con JPA simple.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

svaidya401 picture svaidya401  ·  4Comentarios

viktorgt picture viktorgt  ·  3Comentarios

robertandrewbain picture robertandrewbain  ·  5Comentarios

okihouse picture okihouse  ·  5Comentarios

Ghalleb picture Ghalleb  ·  4Comentarios