Du måste säga till Spring att behandla den frågan som infödd. Annars kommer den att försöka validera den enligt JPA-specifikationen.
Försök:
@Query(value = "SELECT ...", nativeQuery = true)
public List<Object[]> transactions();
Tänk på att du inte kan använda den NYA operatorsyntaxen i det här fallet och du måste hantera resultatet som en array av Object
.
Alternativt
Om du vill använda mappa resultaten direkt till en POJO-klass måste du (förutsatt att du använder JPA 2.1+):
1) Definiera mappningen:
@SqlResultSetMapping(
name="transactionsMapping",
classes={
@ConstructorResult(
targetClass=ConsolidateResDB.class,
columns={
@ColumnResult(name="transdate"),
@ColumnResult(name="orderreqid")
// further mappings ...
}
)
}
)
2) Definiera en inbyggd fråga
@NamedNativeQuery(name="transactions"
, query="SELECT DATE_FORMAT(ts, '%d-%m-%Y') AS transdate, IFNULL(COUNT(orderreqid),0) ... ")
3) Definiera denna metod i CrudRepository
utan @Query
anteckning:
public List<ConsolidateResDB> transactions();