public function execute()
    {
        $storage = $this->em->unwrap();

        if (! $storage instanceof RangeQueryStorage) {
            throw new \RuntimeException(
                'The storage backend ' . $storage->getName() . ' does not support range queries.'
            );
        }

        $uow   = $this->em->getUnitOfWork();
        $class = $this->em->getClassMetadata($this->className);

        $rowHydration = function ($row) use ($uow, $class) {
            $key = [];
            foreach ($class->identifier as $id) {
                $key[$id] = $row[$id];
            }

            return $uow->createEntity($class, $key, $row);
        };
        return $storage->executeRangeQuery($this, $class->storageName, $class->identifier, $rowHydration);
    }