FreeformQuery and Order By

Hi everybody,
I’m trying to set orderBy for FreeformQuery but it does not work.

Here is the code I’m using:


FreeformQuery query = new FreeformQuery("SELECT * FROM myTable");
myFreeformQueryDelegate myDelegate = new myFreeformQueryDelegate();
List<OrderBy> orderBys = new ArrayList<OrderBy>();
orderBys.add(new OrderBy("myfield", true));
myDelegate.setOrderBy(orderBys);
query.setDelegate(myDelegate);
myContainer = new SQLContainer(query);

And these are overridden methods of FreeformStatementDelegate related to Order By:


@Override
	public StatementHelper getQueryStatement(int offset, int limit) throws UnsupportedOperationException {
		StatementHelper sh = new StatementHelper();
        StringBuffer query = new StringBuffer("SELECT * FROM myTable ");
        if (filters != null) {
            query.append(QueryBuilder.getWhereStringForFilters(filters, sh));
        }
        query.append(getOrderByString());
        if (offset != 0 || limit != 0) {
            query.append(" LIMIT ").append(limit);
            query.append(" OFFSET ").append(offset);
        }
        sh.setQueryString(query.toString());
        return sh;
	}

private String getOrderByString() {
        StringBuffer orderBuffer = new StringBuffer("");
        if (orderBys != null && !orderBys.isEmpty()) {
            orderBuffer.append(" ORDER BY ");
            OrderBy lastOrderBy = orderBys.get(orderBys.size() - 1);
            for (OrderBy orderBy : orderBys) {
                orderBuffer.append(SQLUtil.escapeSQL(orderBy.getColumn()));
                if (orderBy.isAscending()) {
                    orderBuffer.append(" ASC");
                } else {
                    orderBuffer.append(" DESC");
                }
                if (orderBy != lastOrderBy) {
                    orderBuffer.append(", ");
                }
            }
        }
        return orderBuffer.toString();
    }

Is there anything wrong? Thanks

Try to implement getCountStatement.
It works for me.

The only thing is that there are 5 calls to show the table:
getQueryStatement
getCountStatement
getCountStatement
getQueryStatement
getCountStatement

I’ve done something wrong. But try and let me know please.