【发布时间】:2020-06-08 11:50:20
【问题描述】:
所以我使用 QueryDsl 在 Java 中构建了一个查询,如下所示(生产名称交换为虚拟名称,但查询是 1:1 相同的)。
QTestA qTestA = QTestA.testA;
QTestB qTestB = QTestB.testB;
QTestC qTestC = QTestC.testC;
JPAQuery<OutputFormat> base = queryFactory
.select(Projections.constructor(OutputFormat.class, qTestB.somefield, qTestB.somefield2, qTestB.somefield3, qTestC.someBfield))
.from(qTestA, qTestB, qTestC)
.where(qTestA.someparam.eq("1234"))
.where(qTestA.bid.eq(qTestB.id))
.where(qTestA.cid.eq(qTestC.id));
当我运行它时,我收到以下错误:
java.lang.OutOfMemoryError: Java heap space
at oracle.jdbc.driver.DynamicByteArray.getStringFromUTF8(DynamicByteArray.java:1067)
at oracle.jdbc.driver.DynamicByteArray.getString(DynamicByteArray.java:634)
// ...
at com.querydsl.jpa.impl.AbstractJPAQuery.getResultList(AbstractJPAQuery.java:160)
at com.querydsl.jpa.impl.AbstractJPAQuery.fetch(AbstractJPAQuery.java:202)
当我在普通 SQL 中构建与 QueryDsl 相同的语句时,我得到了 240k 个结果。这太多了吗?还是我的 QueryDsl 查询中有错误?
【问题讨论】:
标签: java memory-leaks querydsl