StackOverflow error if Projections.fields is used with Subselect.as in selections (4.0.6)

33 views
Skip to first unread message

Balázs Zsoldos

unread,
Jul 21, 2016, 8:30:42 AM7/21/16
to Querydsl
I do not know if this is already fixed, I do not have time to try it out with a newer version. However, you might see if this is still an issue based on the stacktrace. If not, I will test it with the newest later: Use-case:

 - We select an SQLQuery.
 - We use Projections.fields(...) as the selections.
 - We use another SQLQuery.as("propName") as one of the expressions in the fields parameter.
 - If we use Tuple query, everything works well (nothing else, but replacing Projections.fields() to the same expression array)

The following stackoverflow exception occures:

2016-07-21 13:31:46,341 http-nio-8080-exec-8 ERROR      [o.a.c.c.C.[.[localhost].[/].[servlet-module-container-servlet]] Servlet.service() for servlet [servlet-module-container-servlet] in context with path [] threw exception [Servlet execution threw an exception] with root cause
java.lang.StackOverflowError
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:107)
at com.google.common.collect.Iterators.forArray(Iterators.java:1043)
at com.google.common.collect.RegularImmutableList.listIterator(RegularImmutableList.java:106)
at com.google.common.collect.ImmutableList.listIterator(ImmutableList.java:344)
at com.google.common.collect.ImmutableList.iterator(ImmutableList.java:340)
at com.google.common.collect.ImmutableList.iterator(ImmutableList.java:61)
at com.querydsl.core.support.SerializerBase.visitOperation(SerializerBase.java:255)
at com.querydsl.sql.SQLSerializer.visitOperation(SQLSerializer.java:919)
at com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:231)
at com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:31)
at com.querydsl.core.types.dsl.StringOperation.accept(StringOperation.java:44)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:92)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:119)
at com.querydsl.sql.SQLSerializer.handleSelect(SQLSerializer.java:182)
at com.querydsl.sql.SQLSerializer.serializeForQuery(SQLSerializer.java:331)
at com.querydsl.sql.SQLTemplates.serialize(SQLTemplates.java:887)
at com.querydsl.sql.SQLSerializer.serialize(SQLSerializer.java:212)
at com.querydsl.sql.SQLSerializer.visit(SQLSerializer.java:845)
at com.querydsl.sql.SQLSerializer.visit(SQLSerializer.java:41)
at com.querydsl.core.types.SubQueryExpressionImpl.accept(SubQueryExpressionImpl.java:57)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:92)
at com.querydsl.core.support.SerializerBase.visitOperation(SerializerBase.java:270)
at com.querydsl.sql.SQLSerializer.visitOperation(SQLSerializer.java:919)
at com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:231)
at com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:31)
at com.querydsl.core.types.dsl.SimpleOperation.accept(SimpleOperation.java:45)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:92)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:119)
at com.querydsl.sql.SQLSerializer.handleSelect(SQLSerializer.java:182)
at com.querydsl.sql.SQLSerializer.serializeForQuery(SQLSerializer.java:331)
at com.querydsl.sql.SQLTemplates.serialize(SQLTemplates.java:887)
at com.querydsl.sql.SQLSerializer.serialize(SQLSerializer.java:212)
at com.querydsl.sql.SQLSerializer.visit(SQLSerializer.java:845)
at com.querydsl.sql.SQLSerializer.visit(SQLSerializer.java:41)
at com.querydsl.core.types.SubQueryExpressionImpl.accept(SubQueryExpressionImpl.java:57)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:92)
at com.querydsl.core.support.SerializerBase.visitOperation(SerializerBase.java:270)
at com.querydsl.sql.SQLSerializer.visitOperation(SQLSerializer.java:919)
at com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:231)
at com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:31)
at com.querydsl.core.types.dsl.SimpleOperation.accept(SimpleOperation.java:45)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:92)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:119)
at com.querydsl.sql.SQLSerializer.handleSelect(SQLSerializer.java:182)
at com.querydsl.sql.SQLSerializer.serializeForQuery(SQLSerializer.java:331)
at com.querydsl.sql.SQLTemplates.serialize(SQLTemplates.java:887)
at com.querydsl.sql.SQLSerializer.serialize(SQLSerializer.java:212)
at com.querydsl.sql.SQLSerializer.visit(SQLSerializer.java:845)
at com.querydsl.sql.SQLSerializer.visit(SQLSerializer.java:41)
at com.querydsl.core.types.SubQueryExpressionImpl.accept(SubQueryExpressionImpl.java:57)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:92)
at com.querydsl.core.support.SerializerBase.visitOperation(SerializerBase.java:270)
at com.querydsl.sql.SQLSerializer.visitOperation(SQLSerializer.java:919)
at com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:231)
at com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:31)
at com.querydsl.core.types.dsl.SimpleOperation.accept(SimpleOperation.java:45)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:92)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:119)
at com.querydsl.sql.SQLSerializer.handleSelect(SQLSerializer.java:182)
at com.querydsl.sql.SQLSerializer.serializeForQuery(SQLSerializer.java:331)
at com.querydsl.sql.SQLTemplates.serialize(SQLTemplates.java:887)
at com.querydsl.sql.SQLSerializer.serialize(SQLSerializer.java:212)
at com.querydsl.sql.SQLSerializer.visit(SQLSerializer.java:845)
at com.querydsl.sql.SQLSerializer.visit(SQLSerializer.java:41)
at com.querydsl.core.types.SubQueryExpressionImpl.accept(SubQueryExpressionImpl.java:57)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:92)
at com.querydsl.core.support.SerializerBase.visitOperation(SerializerBase.java:270)
at com.querydsl.sql.SQLSerializer.visitOperation(SQLSerializer.java:919)
at com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:231)
at com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:31)
at com.querydsl.core.types.dsl.SimpleOperation.accept(SimpleOperation.java:45)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:92)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:119)
at com.querydsl.sql.SQLSerializer.handleSelect(SQLSerializer.java:182)
at com.querydsl.sql.SQLSerializer.serializeForQuery(SQLSerializer.java:331)
at com.querydsl.sql.SQLTemplates.serialize(SQLTemplates.java:887)
at com.querydsl.sql.SQLSerializer.serialize(SQLSerializer.java:212)
at com.querydsl.sql.SQLSerializer.visit(SQLSerializer.java:845)
at com.querydsl.sql.SQLSerializer.visit(SQLSerializer.java:41)
at com.querydsl.core.types.SubQueryExpressionImpl.accept(SubQueryExpressionImpl.java:57)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:92)
at com.querydsl.core.support.SerializerBase.visitOperation(SerializerBase.java:270)
at com.querydsl.sql.SQLSerializer.visitOperation(SQLSerializer.java:919)
at com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:231)
at com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:31)
at com.querydsl.core.types.dsl.SimpleOperation.accept(SimpleOperation.java:45)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:92)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:119)
at com.querydsl.sql.SQLSerializer.handleSelect(SQLSerializer.java:182)
at com.querydsl.sql.SQLSerializer.serializeForQuery(SQLSerializer.java:331)
at com.querydsl.sql.SQLTemplates.serialize(SQLTemplates.java:887)
at com.querydsl.sql.SQLSerializer.serialize(SQLSerializer.java:212)
at com.querydsl.sql.SQLSerializer.visit(SQLSerializer.java:845)
at com.querydsl.sql.SQLSerializer.visit(SQLSerializer.java:41)
at com.querydsl.core.types.SubQueryExpressionImpl.accept(SubQueryExpressionImpl.java:57)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:92)
at com.querydsl.core.support.SerializerBase.visitOperation(SerializerBase.java:270)
at com.querydsl.sql.SQLSerializer.visitOperation(SQLSerializer.java:919)
at com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:231)
at com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:31)
at com.querydsl.core.types.dsl.SimpleOperation.accept(SimpleOperation.java:45)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:92)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:119)
at com.querydsl.sql.SQLSerializer.handleSelect(SQLSerializer.java:182)
at com.querydsl.sql.SQLSerializer.serializeForQuery(SQLSerializer.java:331)
at com.querydsl.sql.SQLTemplates.serialize(SQLTemplates.java:887)
at com.querydsl.sql.SQLSerializer.serialize(SQLSerializer.java:212)
at com.querydsl.sql.SQLSerializer.visit(SQLSerializer.java:845)
at com.querydsl.sql.SQLSerializer.visit(SQLSerializer.java:41)
at com.querydsl.core.types.SubQueryExpressionImpl.accept(SubQueryExpressionImpl.java:57)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:92)
at com.querydsl.core.support.SerializerBase.visitOperation(SerializerBase.java:270)
at com.querydsl.sql.SQLSerializer.visitOperation(SQLSerializer.java:919)
at com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:231)
at com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:31)
at com.querydsl.core.types.dsl.SimpleOperation.accept(SimpleOperation.java:45)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:92)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:119)
at com.querydsl.sql.SQLSerializer.handleSelect(SQLSerializer.java:182)
at com.querydsl.sql.SQLSerializer.serializeForQuery(SQLSerializer.java:331)
at com.querydsl.sql.SQLTemplates.serialize(SQLTemplates.java:887)
at com.querydsl.sql.SQLSerializer.serialize(SQLSerializer.java:212)
at com.querydsl.sql.SQLSerializer.visit(SQLSerializer.java:845)
at com.querydsl.sql.SQLSerializer.visit(SQLSerializer.java:41)
at com.querydsl.core.types.SubQueryExpressionImpl.accept(SubQueryExpressionImpl.java:57)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:92)
at com.querydsl.core.support.SerializerBase.visitOperation(SerializerBase.java:270)


Balázs Zsoldos

unread,
Jul 21, 2016, 9:12:55 AM7/21/16
to Querydsl
Sorry, this is my issue. Mixed the main query and subquery objects. Forget the question.
Reply all
Reply to author
Forward
0 new messages