You can specify to sort by certain fields in SODA. For this you need to descend to the field and use the appropriate order ascending or order descending method.
In cases where this is not enough, you can use a special comparator.
To sort by a field navigate to the field and call a order ascending or descending method. Note that this only works for fields which have natural sortable values, such as strings and numbers.
final Query query = container.query(); query.constrain(Pilot.class); query.descend("name").orderAscending(); final ObjectSet<Object> result = query.execute();
You can sort by multiple fields. Add a order constrain for each field. The first order statement has the highest priority and last added the lowest.
final Query query = container.query(); query.constrain(Pilot.class); // order first by age, then by name query.descend("age").orderAscending(); query.descend("name").orderAscending(); final ObjectSet<Object> result = query.execute();
In cases where you have more complex sorting requirements, you can specify your own comparator. It is used like a regular Java-comparator.
Query query = container.query(); query.constrain(Pilot.class); query.sortBy(new QueryComparator<Pilot>() { public int compare(Pilot o, Pilot o1) { // sort by string-length return (int)Math.signum(o.getName().length() - o1.getName().length()); } }); final ObjectSet<Object> result = query.execute();