code: @SuppressWarnings("unchecked")
  	private String getOrderByClause() {
  		boolean firstFlag = true;
  		List<TableMetadata.Column> keys;
  		Map<TableMetadata.Column, SortOrder> existsSortOrders = new HashMap<>();
  
  		if (this.sortOrders.isEmpty()) {
  			// ソート条件の指定がない場合は主キーでソートする
  			keys = (List<TableMetadata.Column>) this.tableMetadata.getKeyColumns();
  			for (Column key : keys) {
  				existsSortOrders.put(key, new SortOrder(key.getCamelColumnName(), Order.ASCENDING));
  			}
  		} else {
  			// ソート条件の指定がある場合は指定されたカラムでソートする
  			keys = new ArrayList<>();
  			for (SortOrder sortOrder : sortOrders) {
  				for (TableMetadata.Column metaCol : this.tableMetadata.getColumns()) {
  					if (sortOrder.getCol().equals(metaCol.getCamelColumnName())) {
  						keys.add(metaCol);
  						existsSortOrders.put(metaCol, sortOrder);
  						break;
  					}
  				}
  			}
  		}
  
  		if (!keys.isEmpty()) {
  			StringBuilder sql = new StringBuilder();
  			Dialect dialect = agent().getSqlConfig().getDialect();
  			sql.append("ORDER BY").append(System.lineSeparator());
  			firstFlag = true;
  			for (final TableMetadata.Column key : keys) {
  				SortOrder sortOrder = existsSortOrders.get(key);
  				sql.append("\t");
  				if (firstFlag) {
  					sql.append("  ");
  					firstFlag = false;
  				} else {
  					sql.append(", ");
  				}
  				sql.append(key.getColumnIdentifier()).append(" ").append(sortOrder.getOrder().toString());
  				if (dialect.supportsNullValuesOrdering()) {
  					sql.append(" ").append(sortOrder.getNulls().toString());
  				}
  				sql.append(System.lineSeparator());
  			}
  			return sql.toString();
  		} else {
  			return "";
  		}
  	}
docs: ORDER BY句を生成する
  
  @return ORDER BY句の文字列