Sie müssen Spring anweisen, diese Abfrage als native Abfrage zu behandeln. Andernfalls wird es versuchen, es gemäß der JPA-Spezifikation zu validieren.
Versuchen Sie:
@Query(value = "SELECT ...", nativeQuery = true)
public List<Object[]> transactions();
Denken Sie daran, dass die Syntax des NEW-Operators in diesem Fall nicht verwendet werden kann und Sie das Ergebnis als Array von Object
behandeln müssten .
Alternativ
Wenn Sie die Ergebnisse direkt einer POJO-Klasse zuordnen möchten, müssten Sie (vorausgesetzt, Sie verwenden JPA 2.1+):
1) Definieren Sie die Zuordnung:
@SqlResultSetMapping(
name="transactionsMapping",
classes={
@ConstructorResult(
targetClass=ConsolidateResDB.class,
columns={
@ColumnResult(name="transdate"),
@ColumnResult(name="orderreqid")
// further mappings ...
}
)
}
)
2) Definieren Sie eine native Abfrage
@NamedNativeQuery(name="transactions"
, query="SELECT DATE_FORMAT(ts, '%d-%m-%Y') AS transdate, IFNULL(COUNT(orderreqid),0) ... ")
3) Definieren Sie diese Methode im CrudRepository
ohne @Query
Anmerkung:
public List<ConsolidateResDB> transactions();