/**
  * @param Versionable $resource
  * @param int $toVersionNum
  */
 public function revert(Versionable $resource, $toVersionNum)
 {
     $versions = $this->getVersions($resource);
     if (!isset($versions[$toVersionNum])) {
         throw Exception::unknownVersion($toVersionNum);
     }
     /* @var $version Entity\ResourceVersion */
     $version = $versions[$toVersionNum];
     $versionableClass = $this->_em->getClassMetadata(get_class($resource));
     foreach ($version->getVersionedData() as $k => $v) {
         $versionableClass->reflFields[$k]->setValue($resource, $v);
     }
     if ($versionableClass->changeTrackingPolicy == ClassMetadata::CHANGETRACKING_DEFERRED_EXPLICIT) {
         $this->_em->persist($resource);
     }
 }