2012-01-05 30 views
1

是否有任何可能獲取一個實體的集合只是爲了檢索它的大小?JPA休眠獲取大小檢索集合

喜歡的東西:

FROM Cat c JOIN SIZE c.kittens 

所以我可以使用一個查詢的結果,如:

int sum = 0; 

for(Cat c : em.createQuery("..", Cat.class).getResultList()) 
    sum += c.getKittens().size(); 

是否有任何關鍵字或其他可能只得到大小。

爲此目的獲取整個集合並不是一個大問題,但我只是在考慮提高性能,並問自己如何做到這一點?

回答

2

可以一次(在小貓表中的所有行)

select count(*) from Kittens k 

使用SQL聚合函數在JPQL 單貓

select count(*) from Kittens k where k.cat = :cat 

對於每一個貓和檢索它作爲

Long size = (Long) query.getSingleResult(); 
+0

'COUNT'只會給出金額不是總和,使用'SUM'給出想要的結果循環。 – DrColossos 2012-01-05 15:49:02

+1

@DrColossos - OP正在尋找計數,而不是總數。 – Perception 2012-01-05 15:56:20

+0

我覺得'SUM'是算術加法(3 + 8)就像在賬戶表中得到總金額。而「COUNT」是表格中行的數量。 – viktor 2012-01-05 15:59:57