Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Validierung für Abfrage nach Methode JPQL fehlgeschlagen

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();