Tienes que decirle a Spring que trate esa consulta como nativa. De lo contrario, intentará validarlo de acuerdo con la especificación JPA.
Prueba:
@Query(value = "SELECT ...", nativeQuery = true)
public List<Object[]> transactions();
Tenga en cuenta que no puede usar la sintaxis del operador NEW en este caso y tendría que tratar con el resultado como una matriz de Object
.
Alternativamente
Si desea usar mapear los resultados directamente a una clase POJO, tendría que hacerlo (asumiendo que está usando JPA 2.1+):
@SqlResultSetMapping(
name="transactionsMapping",
classes={
@ConstructorResult(
targetClass=ConsolidateResDB.class,
columns={
@ColumnResult(name="transdate"),
@ColumnResult(name="orderreqid")
// further mappings ...
}
)
}
)
@NamedNativeQuery(name="transactions"
, query="SELECT DATE_FORMAT(ts, '%d-%m-%Y') AS transdate, IFNULL(COUNT(orderreqid),0) ... ")
CrudRepository
sin el @Query
anotación:
public List<ConsolidateResDB> transactions();