Mysema Querydsl:JPAQuery没有list()方法

10

一些关于Mysema Querydsl的在线示例需要使用JPAQuery#list()方法,例如这个包含GROUP BY / COUNT聚合示例的stackoverflow答案。它也在官方文档中被提到。

然而,在JPAQuery类中我并没有看到这个方法。它没有出现在IDE的自动完成中,也没有出现在Maven下载的JAR文件中。

我已经将这些依赖项添加到了我的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()方法不存在?

1个回答

9

当Querydsl从3.x升级到4.x系列时,方法JPAQuery.list已被删除。由于您正在使用4.0.4版本,因此该方法不再可用。

从阅读发布说明中我了解到,版本4在代码库中引入了许多重大更改,这些更改会破坏旧代码。您有两个选项:

  • 降级到3.x系列的最后一个版本,即3.6.8,并使用list方法。
  • 保留版本4.0.4并改用fetch方法。请查看this GitHub issue以获取更改列表。

谢谢您,Tunaki。这正是我担心的事情。我想我会尽量坚持4.0.4,并想办法升级我的查询。@Mysema的人们:有谁介意更新一下参考文档吗? - SputNick
谢谢提醒,会进行修复 https://github.com/querydsl/querydsl/pull/1626 - Timo Westkämper
Mysema中的列表方法需要一个参数,而fetch()不需要任何参数。 - Tisha
3
@Tisha 我认为这里是 select(...).fetch()可以看这个例子 - Tunaki
好的,我已经移动到了com.querydsl包,但是似乎仍然不起作用——jpaQuery.from(qGroup, qType, qCountry) --> <y Q类是EntityPathBase类型,而JPAQuery的from方法需要EntityPath类。我需要使用新包重新生成我的Q类吗? - Tisha
@Tisha,恐怕我不知道这个问题的答案,也许你应该提出一个单独的问题。 - Tunaki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接