Рекомендации по Java-кодированию для повторного использования части запроса для подсчета
внедрение-результат-пейджинг-в-спящий режим пробивной-общее-число-строк вопрос вызывает другой вопрос для меня, онекоторые проблемы реализации:
Теперь вы знаете, что вам нужно повторно использовать часть запроса HQL для подсчета, как эффективно использовать повторно?
Различия между двумя HQL-запросами:
выборcount(?)
вместо pojo или свойства (или списка)выборки не должны происходить, поэтому некоторые таблицы не должны объединятьсяorder by
должен исчезнутьЕсть ли другие отличия?
У тебя естькодирование лучших практик для эффективного повторного использования (касается: усилий, ясности, производительности)?
Пример для простого запроса HQL:
select a from A a join fetch a.b b where a.id=66 order by a.name
select count(a.id) from A a where a.id=66
ОБНОВЛЕНО
Я получил ответы на:
с помощьюкритерии (но мы используем в основном HQL)манипулируя строкой запрос (но все согласны, что это кажется сложным и не очень безопасным)упаковка запроса, полагаясь на оптимизацию базы данных (но есть ощущение, что это небезопасно)Я надеялся, что кто-нибудь даст варианты по другому пути, более связанному с конкатенацией строк.
Можем ли мы построить оба HQL-запроса, используя общие части?