誰能告訴我如何在 JPA 中使用以下本機查詢?現在我收到錯誤訊息,因為找不到轉換器。
在 DB(MYSQL) 中給出正確回應的 Sql 查詢
SELECT SUM(CASE WHEN Status = 'PENDING' THEN 1 ELSE 0 END) AS `pendingRequest`,
SUM(CASE WHEN Status = 'ACTIVE' or Status ='READY' THEN 1 ELSE 0 END) AS `approvedRequest`,
SUM(CASE WHEN Status = 'FAILED' THEN 1 ELSE 0 END) AS `rejectedRequest`,
SUM(CASE WHEN Status = 'ACTIVE' or Status ='READY' or Status ='PENDING' or Status ='FAILED' THEN 1 ELSE 0 END) as totalRequest FROM fiu_consent_db.consent_request;
我在 JPA 存盤庫中使用的查詢
@Query(value = "SELECT SUM(CASE WHEN Status = 'PENDING' THEN 1 ELSE 0 END) AS `pendingRequest`,\n"
" SUM(CASE WHEN Status = 'ACTIVE' or Status ='READY' THEN 1 ELSE 0 END) AS `approvedRequest`,\n"
" SUM(CASE WHEN Status = 'FAILED' THEN 1 ELSE 0 END) AS `rejectedRequest`,\n"
" SUM(CASE WHEN Status = 'ACTIVE' or Status ='READY' or Status ='PENDING' or Status ='FAILED' THEN 1 ELSE 0 END) AS `totalRequest` FROM fiu_consent_db.consent_request",nativeQuery = true)
ConsentRequestCount getAllConsentRequestCount();
我創建的 DTO
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ConsentRequestCount {
private long pendingRequest;
private long approvedRequest;
private long rejectedRequest;
private long totalRequest;
}
我為這 4 個檔案創建了一個單獨的 DTO,并采用了很長的資料型別(也嘗試過 int),但無法映射。
有人可以建議我嗎?
uj5u.com熱心網友回復:
根據此,基于類的DTO預測并不具有天然的查詢作業。您可以通過將 DTO 類更改為 interface 來切換到基于介面的 DTO 投影
所以這個DTO:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ConsentRequestCount {
private long pendingRequest;
private long approvedRequest;
private long rejectedRequest;
private long totalRequest;
}
將其更改為介面:
public interface ConsentRequestCount {
long getPendingRequest();
long getApprovedRequest();
long getRejectedRequest();
long getTotalRequest();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/324667.html
