sql >> Database >  >> RDS >> Mysql

Validatie mislukt voor query voor methode JPQL

Je moet Spring vertellen om die vraag als native te behandelen. Anders zal het proberen het te valideren volgens de JPA-specificatie.

Probeer:

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

Houd er rekening mee dat in dit geval de syntaxis van de operator NEW niet kan worden gebruikt en dat u het resultaat moet behandelen als een array van Object .

Alternatief

Als u de resultaten rechtstreeks naar een POJO-klasse wilt toewijzen, moet u (ervan uitgaande dat u JPA 2.1+ gebruikt):

1) Definieer de toewijzing:

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

2) Definieer een native zoekopdracht

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

3) Definieer deze methode in de CrudRepository zonder de @Query annotatie:

public List<ConsolidateResDB> transactions();


  1. MySQL-query om een ​​veld met JSON-tekenreeks te doorzoeken

  2. Hoe Oracle Interval in Java weer te geven

  3. Migratiefout in django 2; AttributeError:'str' object heeft geen attribuut 'decode'

  4. Hoe een MySQL-record na een bepaalde tijd te verwijderen