what scares me is the different behavior between the Paginator iterator and this direct iterator.

First: http://doctrine-orm.readthedocs.org/en/latest/reference/batch-processing.html#iterating-results
You can't iterate on  `fetch-joined collection-valued associations`, which means if you query joins a OneToMany, the iterator will fail.

Second, I'm not sure it's good to have a stateful object, like: first call getSlice() if you want to paginate, which replaces the current iterator with a new, resetted one.