protected function nativeQuery($query, $parameters, QueryResultMapping $resultMapping) { $parameters = null !== $parameters ? (array) $parameters : []; $result = $this->entityManager->getDatabaseDriver()->run($query, $parameters); if ($result->size() < 1) { return; } if ($result->size() > 1 && $resultMapping->getQueryResultType() !== QueryResultMapping::RESULT_MULTIPLE) { throw new \RuntimeException(sprintf('Expected a single record, got %d', $result->size())); } $results = []; $mappingMetadata = $this->entityManager->getResultMappingMetadata($resultMapping->getQueryResultClass()); foreach ($result->records() as $record) { $results[] = $this->hydrateQueryRecord($mappingMetadata, $record); } return $resultMapping->getQueryResultType() === QueryResultMapping::RESULT_SINGLE ? $results[0] : $results; }