Кажется, вам нужна какая-то нумерация страниц . iBatis делает это через стандартные параметры LIMIT / OFFSET в запросе (и RowBounds в iBatis 3).
Но кажется (если я правильно понял), что вы также используете функцию GROUP BY iBatis, так что выборка, возвращающая N записей с полями N1 distint "idx", приводит к созданию N1 "родительских" объектов каждый один из которых имеет несколько дочерних объектов (всего создано N дочерних объектов). Или что-то типа того.
К сожалению (и по понятным причинам) обе вещи плохо смешиваются .
Я не вижу здесь никакой серебряной пули, можно подумать о многих подходах, у каждого есть свои недостатки - их трудно оценить без дополнительной информации.
Если основные объекты являются «большими» (много записей) и каждый из них будет обрабатываться индивидуально (с подключением к удаленному серверу), вы можете даже выполнить специальную нумерацию страниц, с объектом на страницу, запоминая внутренне ранее считанный идентификатор (что-то вроде SELECT ... FROM ... WHERE id = (SELECT MIN(id) FROM .... WHERE id > #lastid#
))