[英]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.