我想實現一個包含分頁的表組件。在該表的結果是通過多選的查詢檢索到的是這樣的: JPA標準:從多選查詢中計數
SELECT DISTINCT t0.userId,
t0.userName,
t1.rolleName
FROM userTable t0
LEFT OUTER JOIN roleTable t1 ON t0.userId = t1.fkUser
WHERE(t0.userType = 'normalUser' AND t1.roleType = 'loginRole')
這個結果我可以通過一個多選查詢得到。
現在要分頁,我必須首先檢索總行數。 有沒有人可以爲這個sql定義一個criteriaquery?我失敗了,因爲一個子查詢不支持多重選擇,我不知道如何將這個不同的語句放到一個count語句中。
SELECT COUNT(*) FROM
(
SELECT DISTINCT t0.userId,
t0.userName,
t1.rolleName
FROM userTable t0
LEFT OUTER JOIN roleTable t1 ON t0.userId = t1.fkUser
WHERE(t0.userType = 'normalUser' AND t1.roleType = 'loginRole')
)
或
SELECT COUNT(DISTINCT t0.userId || t0.userName || t1.rolleName)
FROM userTable t0
LEFT OUTER JOIN roleTable t1 ON t0.userId = t1.fkUser
WHERE(t0.userType = 'normalUser' AND t1.roleType = 'loginRole')
提前感謝!
Btw。我使用的OpenJPA對WebSphere應用服務器
這不是一個標準API的問題。我正在刪除該標籤。它看起來像原生SQL,不是嗎? – carbontax 2012-07-08 01:25:38
@carbontax感謝您閱讀我的問題,但是如果您仔細閱讀,可以意識到我要求對這些原生SQL之一進行條件查詢。所以criteriaApi標籤是正確的。 – 2012-07-09 06:00:41
JPQL'SELECT COUNT(DISTINCT CONCAT(t0.userId,t0.userName,t1.rolleName)FROM User t0 LEFT OUTER JOIN t0.roles t1 WHERE(t0.userType ='normalUser'AND t1.roleType ='loginRole ')'? – 2013-03-03 16:13:00