protected function fetch(SqlBuilder $builder, $hasJoin, array $values)
{
$primaryKey = $this->targetRepository->getMapper()->getStorageReflection()->getStoragePrimaryKey()[0];
$builder->addWhere($primaryKey, $values);
$builder->addSelect(($hasJoin ? 'DISTINCT ' : '') . $builder->getTableName() . '.*');
$result = $this->context->queryArgs($builder->buildSelectQuery(), $builder->getParameters());
$entities = [];
while ($data = $result->fetch()) {
$entity = $this->targetRepository->hydrateEntity((array) $data);
$entities[$entity->id] = $entity;
}
return new EntityContainer($entities);
}