示例#1
0
  /** Generate a select list of columns containing all properties of the entity classes */
  protected final String selectString(List associations) throws MappingException {

    if (associations.size() == 0) {
      return "";
    } else {
      StringBuilder buf = new StringBuilder(associations.size() * 100);
      int entityAliasCount = 0;
      int collectionAliasCount = 0;
      for (int i = 0; i < associations.size(); i++) {
        OuterJoinableAssociation join = (OuterJoinableAssociation) associations.get(i);
        OuterJoinableAssociation next =
            (i == associations.size() - 1)
                ? null
                : (OuterJoinableAssociation) associations.get(i + 1);
        final Joinable joinable = join.getJoinable();
        final String entitySuffix =
            (suffixes == null || entityAliasCount >= suffixes.length)
                ? null
                : suffixes[entityAliasCount];
        final String collectionSuffix =
            (collectionSuffixes == null || collectionAliasCount >= collectionSuffixes.length)
                ? null
                : collectionSuffixes[collectionAliasCount];
        final String selectFragment =
            joinable.selectFragment(
                next == null ? null : next.getJoinable(),
                next == null ? null : next.getRHSAlias(),
                join.getRHSAlias(),
                entitySuffix,
                collectionSuffix,
                join.getJoinType() == JoinType.LEFT_OUTER_JOIN);
        if (selectFragment.trim().length() > 0) {
          buf.append(", ").append(selectFragment);
        }
        if (joinable.consumesEntityAlias()) entityAliasCount++;
        if (joinable.consumesCollectionAlias() && join.getJoinType() == JoinType.LEFT_OUTER_JOIN)
          collectionAliasCount++;
      }
      return buf.toString();
    }
  }