Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Xác thực không thành công cho truy vấn cho phương pháp JPQL

Bạn đã yêu cầu Spring coi truy vấn đó là truy vấn gốc. Nếu không, nó sẽ cố gắng xác thực nó theo đặc điểm kỹ thuật của JPA.

Hãy thử:

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

Hãy nhớ rằng không thể sử dụng cú pháp toán tử MỚI trong trường hợp này và bạn sẽ phải xử lý kết quả là một mảng Object .

Ngoài ra

Nếu bạn muốn sử dụng ánh xạ kết quả trực tiếp tới một lớp POJO, bạn sẽ phải (giả sử rằng bạn đang sử dụng JPA 2.1+):

1) Xác định ánh xạ:

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

2) Xác định một truy vấn gốc

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

3) Xác định phương pháp này trong CrudRepository không có @Query chú thích:

public List<ConsolidateResDB> transactions();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn một lượng lớn các biến vào bảng bằng cách sử dụng PDO

  2. Sự khác biệt giữa cachePrepStmts và useServerPrepStmts trong MySQL JDBC Driver là gì

  3. Cơ sở dữ liệu nhập MySQL nhưng bỏ qua bảng cụ thể

  4. Chèn dữ liệu từ giao diện người dùng vào mysql db trong anglejs

  5. MySQL - Làm thế nào để ném ngoại lệ trong thủ tục được lưu trữ?