if ( isDistinct() ) {
jpaqlQuery.append( " distinct " );
}
if ( getSelection() == null ) {
// we should have only a single root (query validation should have checked this...)
final Root root = getRoots().iterator().next();
jpaqlQuery.append( ( (ExpressionImplementor) root ).renderProjection( renderingContext) );
}
else {
jpaqlQuery.append( ( (ExpressionImplementor) getSelection() ).renderProjection( renderingContext ) );
}
jpaqlQuery.append( " from " );
String sep = "";
for ( Root root : getRoots() ) {
( (TableExpressionMapper) root ).prepareAlias( renderingContext );
jpaqlQuery.append( sep );
jpaqlQuery.append( ( ( TableExpressionMapper ) root ).renderTableExpression( renderingContext ) );
sep = ", ";
}
for ( Root root : getRoots() ) {
renderJoins( jpaqlQuery, renderingContext, root.getJoins() );
renderFetches( jpaqlQuery, renderingContext, root.getFetches() );
}
if ( getRestriction() != null) {
jpaqlQuery.append( " where " )
.append( ( (ExpressionImplementor) getRestriction() ).render( renderingContext ) );