Скажем, у меня есть субъект работника, где одним из атрибутов является зарплата (десятичная дробь), и я хотел сгруппировать по разным возрастным порогам (например, <25 000, 25 000-50 000, 50 000-75 000, 75 000-100 000, 100 000+).Я мог бы написать следующий SQL: </p>
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 поддерживающих подзапросов в предложении FROM .Я знаю, что JPA все еще может выполнять собственный SQL, но мне было интересно, какие еще варианты могут существовать, чтобы использовать API Критерии и все же получить преимущество группировки на уровне базы данных.
Вариант использования для этого - динамически генерируемые запросы (следовательно, используя Criteria API), которые создаются на основе входящего пользовательского запроса.Некоторые запросы выполняются для объектов, имеющих миллионы записей, поэтому группировка кортежей в Java менее желательна.Сервер БД обладает гораздо большей мощностью, чем Сервер Приложений, поэтому также надеялся оттолкнуть оттуда как можно больше работы.
Как может выглядеть подход с использованием API критериев JPA?