Du skal bede Spring om at behandle den forespørgsel som en indfødt. Ellers vil den forsøge at validere den i henhold til JPA-specifikationen.
Prøv:
@Query(value = "SELECT ...", nativeQuery = true)
public List<Object[]> transactions();
Husk, at du ikke kan bruge den NYE operatørsyntaks i dette tilfælde, og du vil skulle håndtere resultatet som en matrix af Object
.
Alternativt
Hvis du vil bruge kortlægge resultaterne direkte til en POJO-klasse, skal du (forudsat at du bruger JPA 2.1+):
1) Definer kortlægningen:
@SqlResultSetMapping(
name="transactionsMapping",
classes={
@ConstructorResult(
targetClass=ConsolidateResDB.class,
columns={
@ColumnResult(name="transdate"),
@ColumnResult(name="orderreqid")
// further mappings ...
}
)
}
)
2) Definer en indbygget forespørgsel
@NamedNativeQuery(name="transactions"
, query="SELECT DATE_FORMAT(ts, '%d-%m-%Y') AS transdate, IFNULL(COUNT(orderreqid),0) ... ")
3) Definer denne metode i CrudRepository
uden @Query
anmærkning:
public List<ConsolidateResDB> transactions();