Java 带子查询的JPA条件查询

Java 带子查询的JPA条件查询,java,jpa-2.0,Java,Jpa 2.0,我想知道是否可以用JPA2.0 criteria api表达以下查询 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),

我想知道是否可以用JPA2.0 criteria api表达以下查询

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

除了两个子查询之外,我的一切都正常工作。我想知道这是否可能。谢谢。

那是办不到的。子查询不能在SELECT子句中使用。JPQL查询中也存在同样的限制。在JPA 2.0规范中,这表示为:

子查询可以在WHERE和HAVING子句中使用


这是不可能做到的。子查询不能在SELECT子句中使用。JPQL查询中也存在同样的限制。在JPA 2.0规范中,这表示为:

子查询可以在WHERE和HAVING子句中使用


我建议在两个单独的查询中进行此计算。不需要太多的代码,而且可能需要更高的性能,因为您只需要计算一次总数。谢谢@RasmusFranke,是的,这是我的第二个选择。我建议在两个单独的查询中进行此计算。不需要太多的代码,而且可能需要更高的性能,因为您只需要计算一次总数。谢谢@RasmusFranke,是的,这是我的第二个选择。非常感谢,考虑到这一点,我可以转移到其他备选方案。非常感谢,考虑到这一点,我可以转移到其他备选方案。