diff --git a/querydsl-core/src/main/java/com/mysema/query/QueryBase.java b/querydsl-core/src/main/java/com/mysema/query/QueryBase.java index 57eafcef2..cdf0d0969 100644 --- a/querydsl-core/src/main/java/com/mysema/query/QueryBase.java +++ b/querydsl-core/src/main/java/com/mysema/query/QueryBase.java @@ -7,7 +7,9 @@ package com.mysema.query; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; import com.mysema.query.grammar.OrderSpecifier; import com.mysema.query.grammar.types.Expr; @@ -24,11 +26,13 @@ public class QueryBase> imp protected final CascadingBoolean having = new CascadingBoolean(); + protected final Set> exprInJoins = new HashSet>(); protected final List> joins = new ArrayList>(); protected final List> orderBy = new ArrayList>(); protected final List> select = new ArrayList>(); protected final CascadingBoolean where = new CascadingBoolean(); protected void clear(){ + exprInJoins.clear(); joins.clear(); groupBy.clear(); having.clear(); @@ -44,9 +48,12 @@ public class QueryBase> imp private final Metadata metadata = new Metadata(); - public SubType from(Expr... o) { + public SubType from(Expr... o) { for (Expr expr : o){ - joins.add(new JoinExpression(JoinType.DEFAULT,expr)); + if (!exprInJoins.contains(expr)){ + joins.add(new JoinExpression(JoinType.DEFAULT,expr)); + exprInJoins.add(expr); + } } return _this; }