我們正在開發一個使用EJB連接到數據庫的Web應用程序。來自子句中的JPA子查詢
在我們的數據庫模型中,我們有一個移動設備表,另一個具有功能,最後一個映射功能的值與手機型號。 模型(id_model,...) 功能(id_feature,...) model_features(id_model,id_feature,值)
我們要執行一個查詢,得到的匹配特徵數量排序的模型。也就是說,我們通過一系列功能匹配(即從1到9), ,並且我們希望所有包含'yes'的設備作爲至少一個這些功能的值,並按前面所述對它們進行排序。
我們創建了一個SQL查詢,使這項任務,它的工作原理:
SELECT CONCAT(subquery.numberf*100/9,"%") AS "Features", subquery.idModel AS "ID model"
FROM (select count(*) AS numberf, id_model AS idModel
FROM model_features
WHERE value LIKE '%Yes%' AND id_feature IN(1,2,3,4,5,6,7,8,9)
GROUP BY id_model) subquery
WHERE subquery.numberf > 0
ORDER BY subquery.numberf DESC
由於我們使用JPA,因此,我們一定要建立JPQL querys,它不可能包含在subquerys FROM子句,我們想知道 是否可以將子查詢「傳遞」到WHERE子句是可能的,並且不會以不良方式影響性能。我們該怎麼辦?
你能只使用一個本地查詢?看起來最終結果更多的是一個集合而不是一個實體。 – wrschneider 2012-01-10 20:34:21
我們已經考慮過這種可能性,但如果可能的話,我們會用jpa來做。謝謝@ wrschneider99 – frayab 2012-01-10 22:11:34