diff --git a/hibernate-core/src/main/java/org/hibernate/hql/internal/ast/tree/FromClause.java b/hibernate-core/src/main/java/org/hibernate/hql/internal/ast/tree/FromClause.java index 1ff9df15fa..86b0232e6f 100644 --- a/hibernate-core/src/main/java/org/hibernate/hql/internal/ast/tree/FromClause.java +++ b/hibernate-core/src/main/java/org/hibernate/hql/internal/ast/tree/FromClause.java @@ -95,8 +95,12 @@ void moveFromElementToEnd(FromElement element) { fromElements.remove( element ); fromElements.add( element ); // We must move destinations which must come after the from element as well - fromElements.removeAll( element.getDestinations() ); - fromElements.addAll( element.getDestinations() ); + for ( FromElement fromElement : element.getDestinations() ) { + if ( this == fromElement.getFromClause() ) { + fromElements.remove( fromElement ); + fromElements.add( fromElement ); + } + } } public void finishInit() {