Anda telah memberi tahu Spring untuk memperlakukan kueri itu sebagai kueri asli. Jika tidak, ia akan mencoba memvalidasinya sesuai dengan spesifikasi JPA.
Coba:
@Query(value = "SELECT ...", nativeQuery = true)
public List<Object[]> transactions();
Ingatlah bahwa tidak dapat menggunakan sintaks operator BARU dalam kasus ini dan Anda harus menangani hasil sebagai larik Object
.
Alternatifnya
Jika Anda ingin menggunakan hasil pemetaan langsung ke kelas POJO Anda harus (dengan asumsi Anda menggunakan JPA 2.1+):
1) Tentukan pemetaan:
@SqlResultSetMapping(
name="transactionsMapping",
classes={
@ConstructorResult(
targetClass=ConsolidateResDB.class,
columns={
@ColumnResult(name="transdate"),
@ColumnResult(name="orderreqid")
// further mappings ...
}
)
}
)
2) Tentukan kueri asli
@NamedNativeQuery(name="transactions"
, query="SELECT DATE_FORMAT(ts, '%d-%m-%Y') AS transdate, IFNULL(COUNT(orderreqid),0) ... ")
3) Tentukan metode ini di CrudRepository
tanpa @Query
anotasi:
public List<ConsolidateResDB> transactions();