У меня есть класс Employee
с тремя членами класса: id, isVisible, sectionId .
Я хочу запросить в HQL:
- Если в определенном разделе есть работники вообще
- Если это так - все сотрудники в этом разделе скрыты.
Сейчас я делаю что-то вроде:
SELECT count(e.id), count(nullif(e.isVisible,0))
from Employee e where sectionId = :sectionId
Но подсчет не так эффективен, потому что требует полного сканирования таблицы , а подсчитываемое число мне не нужно.
Вместо этого я могу сделать два запроса.
Запросите раздел для сотрудников, выполнив простой выбор и ограничив количество результатов одним результатом:
SELECT e.id from Employee e where sectionId = :sectionId
И если возвращается результат, запросите первого сотрудника в видимом разделе:
SELECT e.id from Employee e where visible = 1 and sectionId = :sectionId
Мой вопрос: могу ли я выполнить обе проверки в одном запросе?