У меня есть требование, чтобы подсчитать количество групп по записям для целей разбивки на страницы. Например:Получить собственный SQL из QueryDSL JPA (JPAQuery или JPQLQuery)
select count(*) from (
select name, count(id) from customer
group by name
);
Однако это не может быть достигнуто с помощью QueryDSL из-за ограничения JPA , где JPQL не позволяет выбрать количество из суб запроса.
Возможно ли получить собственный SQL из QueryDSL JPAQuery или JPQLQuery? Мой план состоит в том, чтобы сконструировать и выполнить собственный SQL-запрос select count через EntityManager.
String subQueryNativeSQL = "..."; // native SQL from QueryDSL
Query q = em.createNativeQuery("select count(*) from (" + subQueryNativeSQL + ")");
long count = (long) q.getSingleResult();
Конечно JPQL позволяет вам выбрать COUNT в подзапроса, согласно спецификации JPA. 'simple_select_expression :: = single_valued_path_expression | скалярное выражение | aggregate_expression | ident_variable' –
Привет, Neil. Может быть, вы можете показать мне, как использовать JPQL для построения оператора SQL, который я разместил выше? – kenn3th
Возможно, вы можете опубликовать свои ENTITIES и то, что вы пробовали с помощью JPQL. Поскольку JPQL явно зависит от классов/полей, и вы не публикуете ни одно из них –