2015-10-13 1 views
5

Некоторые онлайн-примеры для Использование Mysema Querydsl основывается на методе JPAQuery#list(), например. this stackoverflow answer, содержащий пример агрегата GROUP BY/COUNT. Он также упоминается на протяжении всего official documentation.Mysema Querydsl: Нет метода JPAQuery # list()

Однако я не вижу этот метод на классе JPAQuery. Он не отображается в автозаполнении IDE, и его нет в файле JAR, загруженном Maven.

Я добавил эту зависимость в мою Maven проект:

<dependency> 
    <groupId>com.querydsl</groupId> 
    <artifactId>querydsl-apt</artifactId> 
    <version>4.0.4</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>com.querydsl</groupId> 
    <artifactId>querydsl-jpa</artifactId> 
    <version>4.0.4</version> 
</dependency> 

Почему метод JPAQuery#list() нет?

ответ

3

Метод JPAQuery.list был удален, когда Querydsl модернизирован от 3.x до линии 4.x. Поскольку вы используете версию 4.0.4, этот метод больше не доступен.

Как я понимаю, начиная с чтения release notes, версия 4 вводит множество существенных изменений в базе кода, которая разбивает старый код. У вас есть два варианта:

  • даунгрейд до последней версии 3.х линии, 3.6.8 и использовать list метод
  • Keep версии 4.0.4 и использовать метод fetch вместо этого. Взгляните на this GitHub issue на список изменений.
+0

спасибо Tunaki. Вот чего я боялся. Я думаю, что я попытаюсь придерживаться 4.0.4 и выяснить, как обновить мои запросы. Люди @Mysema: Кто-нибудь мог бы обновить справочный документ? – SputNick

+0

Спасибо за головы. Будет исправлено https://github.com/querydsl/querydsl/pull/1626 –

+0

Как насчет метода списка, который принимает параметр (в mysema). Функция fetch() не принимает никаких параметров. – Tisha