Je moet Spring vertellen om die vraag als native te behandelen. Anders zal het proberen het te valideren volgens de JPA-specificatie.
Probeer:
@Query(value = "SELECT ...", nativeQuery = true)
public List<Object[]> transactions();
Houd er rekening mee dat in dit geval de syntaxis van de operator NEW niet kan worden gebruikt en dat u het resultaat moet behandelen als een array van Object
.
Alternatief
Als u de resultaten rechtstreeks naar een POJO-klasse wilt toewijzen, moet u (ervan uitgaande dat u JPA 2.1+ gebruikt):
1) Definieer de toewijzing:
@SqlResultSetMapping(
name="transactionsMapping",
classes={
@ConstructorResult(
targetClass=ConsolidateResDB.class,
columns={
@ColumnResult(name="transdate"),
@ColumnResult(name="orderreqid")
// further mappings ...
}
)
}
)
2) Definieer een native zoekopdracht
@NamedNativeQuery(name="transactions"
, query="SELECT DATE_FORMAT(ts, '%d-%m-%Y') AS transdate, IFNULL(COUNT(orderreqid),0) ... ")
3) Definieer deze methode in de CrudRepository
zonder de @Query
annotatie:
public List<ConsolidateResDB> transactions();