gpt4 book ai didi

hibernate - Grails渴望通过滚动获取

转载 作者:行者123 更新时间:2023-12-02 14:37:27 31 4
gpt4 key购买 nike

我试图滚动浏览namedQuery的结果集。为了避免N = 1的问题,我将获取参数设置为渴望。我也对独特的顶级对象集感兴趣。所以我的 Controller 闭包看起来像这样:

def list = {
params.max = Math.min(params.max ? params.int('max') : 25, 50)
params.fetch=[tasks:"eager"]
def requests = Request.activeOnly.open.listDistinct(params)
...
}

我看到的问题是查询返回的少于25个请求对象。相反,它返回联合结果集的25行,这不是我想要的。如何重组?顺便说一下,“选择”获取效果很好,但会导致26个查询。
谢谢,
德米特里。

最佳答案

您不能将最大值结果应用于对集合执行联接提取的查询,因为最大值将应用于结果集中返回的行数,而不是实体数。

在这种情况下,我要做的是第一个查询,该查询仅获取根实体的ID(Request),然后第二个查询,使用IN子句选择具有其获取的集合的实体:

// first query, with max results applied: returns 25 IDs
select request.id from Request request where ...

// second request:
select request from Request request
left join fetch request.tasks
where request.id in (:setOfIdsReturnedByTheFirstQuery)

关于hibernate - Grails渴望通过滚动获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7668229/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com