そのクエリをネイティブクエリとして扱うようにSpringに指示しました。それ以外の場合は、JPA仕様に従って検証を試みます。
試してみてください:
@Query(value = "SELECT ...", nativeQuery = true)
public List<Object[]> transactions();
この場合、NEW演算子構文を使用できず、結果をObject
の配列として処理する必要があることに注意してください。 。
または
結果を直接POJOクラスにマップする場合は、(JPA 2.1以降を使用していると仮定して)次のようにする必要があります。
1) マッピングを定義します:
@SqlResultSetMapping(
name="transactionsMapping",
classes={
@ConstructorResult(
targetClass=ConsolidateResDB.class,
columns={
@ColumnResult(name="transdate"),
@ColumnResult(name="orderreqid")
// further mappings ...
}
)
}
)
2) ネイティブクエリを定義する
@NamedNativeQuery(name="transactions"
, query="SELECT DATE_FORMAT(ts, '%d-%m-%Y') AS transdate, IFNULL(COUNT(orderreqid),0) ... ")
3) このメソッドをCrudRepository
で定義します @Query
なし 注釈:
public List<ConsolidateResDB> transactions();