2012-06-25 4 views
1

Мне было интересно, можно ли выразить следующий запрос с помощью критериев jpa 2.0 api.Запрос критериев JPA с подзапросом

simple_table: 
user_name(varchar), 
bytes_total(bigint), 
time_total(bigint) 

>select 
    user_name, 
    sum(bytes_total), 
    sum(bytes_total) * 100/(select sum(bytes_total) from simple_table), 
    sum(time_total), 
    sum(time_total) * 100/(select sum(time_total) from simple_table) 
from simple_table 
group by user_name 

У меня есть все, кроме двух подзапросов. Я хотел бы знать, возможно ли это. Благодарю.

+0

Я бы рекомендовал делать это вычисление в двух отдельных запросах. Не так много кода и, вероятно, более высокая производительность, так как вам нужно будет только вычислить общую сумму один раз. –

+0

Спасибо @RasmusFranke, да, это был мой второй вариант. – user1387786

ответ

1

Это не может быть сделано. Подзапросы не могут использоваться в предложении SELECT. Такое же ограничение в запросах JPQL. В спецификации JPA 2.0 это выражается следующим образом:

Подзапросы могут использоваться в предложении WHERE и HAVING.

+0

Большое спасибо, имея в виду, я могу перейти к другим альтернативам. – user1387786