簡體   English   中英

當有一行時,JPQL計數返回0

[英]JPQL count returning 0 when there is a row

我使用兩個相同的JPQL NamedQueries,除了一個是COUNT。 以下是查詢:

select i from IssueRingReqsBrit i where i.ringDataRequest = 'I' and i.onRingIssue = 'Y' and i.noCardIssued = 0

select COUNT(i) from IssueRingReqsBrit i where i.ringDataRequest = 'I' and i.onRingIssue = 'Y' and i.noCardIssued = 0

IssueRingReqsBrit是一個視圖。

第一個查詢返回的列表6是正確的。

第二個查詢,計數,返回0。

使用的數據庫是Oracle。 將Glassfish與Eclipselink一起使用。 PU上的共享緩存模式設置為無。

使用Oracle中的本機查詢,將返回正確的值。

下面是我用來執行查詢並檢查結果的代碼。 這些行之間沒有其他代碼,它們像在Java中一樣被復制和粘貼。

query = em.createNamedQuery("IssueRingReqsBrit.onRingIssue_toSend_initial");

System.out.println("Size: " + query.getResultList().size() );


//ringingRequestRingIssueYesToSendInitial
query = em.createNamedQuery("IssueRingReqsBrit.onRingIssue_toSend_initial_count");


ringingRequestRingIssueYesToSendInitial = ((Long)query.getSingleResult()).intValue();

System.out.println("ringingRequestRingIssueYesToSendInitial = " + ringingRequestRingIssueYesToSendInitial);

任何建議表示贊賞。

基於JPQL語言參考 ,在COUNT函數中,作為聚合函數的參數的路徑表達式必須在狀態字段中終止。 COUNT的路徑表達式自變量可以終止於狀態字段或關聯字段,或者COUNT的自變量可以是標識變量。 所以嘗試這樣的事情

select COUNT(i.<field>) from IssueRingReqsBrit i where i.ringDataRequest = 'I' and i.onRingIssue = 'Y' and i.noCardIssued = 0

COUNT個返回Long。

充分利用您在長期返還的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM