Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Falha na validação da consulta do método JPQL


Você disse ao Spring para tratar essa consulta como nativa. Caso contrário, ele tentará validá-lo de acordo com a especificação JPA.

Experimentar:
@Query(value = "SELECT ...", nativeQuery = true)
public List<Object[]> transactions();

Tenha em mente que não pode usar a sintaxe do operador NEW neste caso e você teria que lidar com o resultado como um array de Object .

Alternativamente

Se você quiser usar mapear os resultados diretamente para uma classe POJO, você teria que (supondo que você esteja usando JPA 2.1+):

1) Defina o mapeamento:
@SqlResultSetMapping(
    name="transactionsMapping",
    classes={
        @ConstructorResult(
            targetClass=ConsolidateResDB.class,
            columns={
                @ColumnResult(name="transdate"),
                @ColumnResult(name="orderreqid")
                // further mappings ...
            }
        )
    }
)

2) Definir uma consulta nativa
@NamedNativeQuery(name="transactions"
    , query="SELECT DATE_FORMAT(ts, '%d-%m-%Y') AS transdate, IFNULL(COUNT(orderreqid),0) ... ")

3) Defina este método no CrudRepository sem o @Query anotação:
public List<ConsolidateResDB> transactions();