/**
  * {@inheritdoc}
  */
 public function load(array $criteria, $entity = null, $assoc = null, array $hints = array(), $lockMode = null, $limit = null, array $orderBy = null)
 {
     if ($entity !== null || $assoc !== null || !empty($hints) || $lockMode !== null) {
         return $this->persister->load($criteria, $entity, $assoc, $hints, $lockMode, $limit, $orderBy);
     }
     //handle only EntityRepository#findOneBy
     $timestamp = $this->timestampRegion->get($this->timestampKey);
     $query = $this->persister->getSelectSQL($criteria, null, null, $limit, null, $orderBy);
     $hash = $this->getHash($query, $criteria, null, null, null, $timestamp ? $timestamp->time : null);
     $rsm = $this->getResultSetMapping();
     $querykey = new QueryCacheKey($hash, 0, Cache::MODE_NORMAL);
     $queryCache = $this->cache->getQueryCache($this->regionName);
     $result = $queryCache->get($querykey, $rsm);
     if ($result !== null) {
         if ($this->cacheLogger) {
             $this->cacheLogger->queryCacheHit($this->regionName, $querykey);
         }
         return $result[0];
     }
     if (($result = $this->persister->load($criteria, $entity, $assoc, $hints, $lockMode, $limit, $orderBy)) === null) {
         return null;
     }
     $cached = $queryCache->put($querykey, $rsm, array($result));
     if ($this->cacheLogger) {
         if ($result) {
             $this->cacheLogger->queryCacheMiss($this->regionName, $querykey);
         }
         if ($cached) {
             $this->cacheLogger->queryCachePut($this->regionName, $querykey);
         }
     }
     return $result;
 }