Использовать существующий JPAQuery как подзапрос

У меня есть экземпляр JPAQuery<?> И JPAQuery<?> нужно получить количество. Однако, поскольку таблица может содержать много элементов (миллионов), я хочу ограничить количество до определенного максимума, скажем, 50 000.

Текущий QueryDSL-код эффективно делает это:

query.fetchCount();

Теперь мои желаемые модификации довольно просты в raw sql:

select count(*) from (<whatever query> limit 50000);

Однако я не знаю, как бы я выразил это в querydsl. Следующий код .from() , потому что .from() принимает путь к объекту, но query - это запрос:

JPAExpressions.select(Wildcard.all)
    .from(query.limit(50000))
    .fetchCount();

Я использую querydsl 4.

Всего 1 ответ


JPAExpressions.select(Wildcard.all) возвращает дочерний элемент SimplyQuery, для которого вы можете вызвать ограничение.

JPAExpressions.select(Wildcard.all)
    .from(entity)
    .limit(50000)
    .fetchCount();

Есть идеи?

10000