带有分页的QueryDsl

时间:2018-07-04 06:51:49

标签: java spring jpa querydsl

我有Spring Jpa的QueryDsl查询,写成:

JPAQuery<FooEntity> query = getQuerydsl()
        .<FooEntity>createQuery()
        .from(foo)
        .leftJoin(foo.bar, bar).fetchJoin()
        .leftJoin(...).fetchJoin()
        .where(predicate)
        .distinct();
    return new PageImpl<>(getQuerydsl().applyPagination(pageable, query).fetch(), pageable,
        query.fetchCount());
使用

FetchJoin是因为需要来自联接表的数据。奇怪的是,其中一些查询的正确SQL以limit ?,?结尾。这意味着分页应用于数据库内部。

但是,如果映射是通过@OneToMany(mappedBy = "...")而不是@JoinColumn()完成的,那么所有数据都会加载到内存中,并且我会看到警告:

HHH000104: firstResult/maxResults specified with collection fetch; applying in memory!

在这种情况下如何避免将所有数据加载到内存中?

0 个答案:

没有答案