sql >> Databáze >  >> RDS >> Mysql

Ověření se nezdařilo pro dotaz na metodu JPQL

Musíte Springovi říct, aby s tímto dotazem zacházel jako s nativním. Jinak se jej pokusí ověřit podle specifikace JPA.

Zkuste:

@Query(value = "SELECT ...", nativeQuery = true)
public List<Object[]> transactions();

Mějte na paměti, že v tomto případě nelze použít syntaxi operátoru NEW a museli byste s výsledkem pracovat jako s polem Object .

Alternativně

Pokud chcete použít mapování výsledků přímo do třídy POJO, budete muset (za předpokladu, že používáte JPA 2.1+):

1) Definujte mapování:

@SqlResultSetMapping(
    name="transactionsMapping",
    classes={
        @ConstructorResult(
            targetClass=ConsolidateResDB.class,
            columns={
                @ColumnResult(name="transdate"),
                @ColumnResult(name="orderreqid")
                // further mappings ...
            }
        )
    }
)

2) Definujte nativní dotaz

@NamedNativeQuery(name="transactions"
    , query="SELECT DATE_FORMAT(ts, '%d-%m-%Y') AS transdate, IFNULL(COUNT(orderreqid),0) ... ")

3) Definujte tuto metodu v CrudRepository bez @Query anotace:

public List<ConsolidateResDB> transactions();


  1. Obsahuje MS SQL Server hranice rozsahu?

  2. Část 2:Klasifikace obrázků pomocí serveru MariaDB a TensorFlow – výukový program

  3. MySQL – Jak spustit více aktualizačních dotazů na jednom řádku?

  4. Zábava s kompresí (columnstore) na velmi velkém stole – část 3