Использовать существующий JPAQuery как подзапрос - PullRequest
1 голос
/ 14 мая 2019

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

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

query.fetchCount();

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

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

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

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

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

1 Ответ

0 голосов
/ 14 мая 2019

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

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