【发布时间】:2019-10-21 14:58:02
【问题描述】:
我们正在将项目从 Querydsl 版本 3 更新到版本 4。子查询的工作方式发生了变化。在版本 3 中,您可以编写如下子查询:
ListSubQuery<Long> subQueryResult = new JPASubQuery()
.from(domain)
.where(domain.prefix.eq(prefix))
.list(domain.id);
我将代码升级为:
JPQLQuery<Long> subQueryResult = from(domain)
.select(domain.id)
.where(domain.prefix.eq(prefix))
.fetchAll();
我的问题是关于我在查询末尾添加的方法 fetchAll。我不确定是否有必要。我以为它是 list 的替代品,但我的同事指出返回类型只是 JPQLQuery,它已经由 where 返回。
fetchAll 的JavaDoc 状态:
将“fetchJoin all properties”标志添加到最后定义的连接。
这对我来说毫无意义。实验似乎表明调用是不必要的,但这仍然留下了一个问题——它是为了什么?我可以从我的子查询中安全地删除它吗?
【问题讨论】: