如何“绑定” JPA中的实体属性

时间:2019-02-22 21:10:04

标签: jpa

说我有一个工人实体,其属性之一是薪水(十进制),我想按不同的年龄阈值分组(例如,<25,000、25,000-50,000、50,000-75,000、75,000-100,000、100,000 +)。我可能会编写以下SQL:

SELECT COUNT(*), SalaryBucket
FROM (
    SELECT
      CASE
        WHEN Salary < 25000 THEN '<25,000'
        WHEN Salary >= 25000 AND Salary < 50000 THEN '25,000-50,000'
        WHEN Salary >= 50000 AND Salary < 75000 THEN '50,000-75,000'
        WHEN Salary >= 75000 AND Salary < 100000 THEN '75,000-100,000'
        WHEN Salary >= 100000 THEN '100,000+'
      END As SalaryBucket
    FROM Worker
)
GROUP BY AgeBucket

我仍然找不到JPA supporting subqueries in the FROM clause的任何内容。我知道JPA仍然可以执行本机SQL,但是想知道使用Criteria API可能还有哪些其他选择,并且仍然可以获得在数据库层进行分组的好处。

此用例是根据传入的用户请求构建的动态生成的查询(因此使用Criteria API)。有些查询是针对具有数百万条记录的实体执行的,因此不太希望在Java中对Tuples进行分组。数据库服务器比应用程序服务器具有更多的功能,因此也希望尽可能多地开展工作。

使用JPA标准API的方法会是什么样?

0 个答案:

没有答案