protected static String orderBy(
List<JoinableAssociation> associations,
LoadQueryAliasResolutionContext aliasResolutionContext)
throws MappingException {
StringBuilder buf = new StringBuilder();
JoinableAssociation previous = null;
for ( JoinableAssociation association : associations ) {
final String rhsAlias = aliasResolutionContext.resolveAssociationRhsTableAlias( association );
if ( association.getJoinType() == JoinType.LEFT_OUTER_JOIN ) { // why does this matter?
if ( association.getJoinable().isCollection() ) {
final QueryableCollection queryableCollection = (QueryableCollection) association.getJoinable();
if ( queryableCollection.hasOrdering() ) {
final String orderByString = queryableCollection.getSQLOrderByString( rhsAlias );
buf.append( orderByString ).append(", ");
}
}
else {
// it might still need to apply a collection ordering based on a
// many-to-many defined order-by...
if ( previous != null && previous.getJoinable().isCollection() ) {
final QueryableCollection queryableCollection = (QueryableCollection) previous.getJoinable();
if ( queryableCollection.isManyToMany() && previous.isManyToManyWith( association ) ) {
if ( queryableCollection.hasManyToManyOrdering() ) {
final String orderByString = queryableCollection.getManyToManyOrderByString( rhsAlias );
buf.append( orderByString ).append(", ");
}
}