sql >> Database teknologi >  >> RDS >> Mysql

Validering mislykkedes for forespørgsel til metode JPQL

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


  1. SQL Server Latches - Andre Latches at vide om

  2. Åbner Android Sqlite-databasen i fragment

  3. MySQL:Få total i sidste række af MySql-resultat

  4. 2 måder at returnere rækker, der kun indeholder ikke-alfanumeriske tegn i MariaDB