/**
  * {@inheritdoc}
  */
 public function loadCriteria(Criteria $criteria)
 {
     $query = $this->persister->getSelectSQL($criteria);
     $timestamp = $this->timestampRegion->get($this->timestampKey);
     $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);
     $cacheResult = $queryCache->get($querykey, $rsm);
     if ($cacheResult !== null) {
         if ($this->cacheLogger) {
             $this->cacheLogger->queryCacheHit($this->regionName, $querykey);
         }
         return $cacheResult;
     }
     $result = $this->persister->loadCriteria($criteria);
     $cached = $queryCache->put($querykey, $rsm, $result);
     if ($this->cacheLogger) {
         if ($result) {
             $this->cacheLogger->queryCacheMiss($this->regionName, $querykey);
         }
         if ($cached) {
             $this->cacheLogger->queryCachePut($this->regionName, $querykey);
         }
     }
     return $result;
 }
 /**
  * {@inheritdoc}
  */
 public function loadCriteria(Criteria $criteria)
 {
     $orderBy = $criteria->getOrderings();
     $limit = $criteria->getMaxResults();
     $offset = $criteria->getFirstResult();
     $query = $this->persister->getSelectSQL($criteria);
     $hash = $this->getHash($query, $criteria, $orderBy, $limit, $offset);
     $rsm = $this->getResultSetMapping();
     $queryKey = new QueryCacheKey($hash, 0, Cache::MODE_NORMAL, $this->timestampKey);
     $queryCache = $this->cache->getQueryCache($this->regionName);
     $cacheResult = $queryCache->get($queryKey, $rsm);
     if ($cacheResult !== null) {
         if ($this->cacheLogger) {
             $this->cacheLogger->queryCacheHit($this->regionName, $queryKey);
         }
         return $cacheResult;
     }
     $result = $this->persister->loadCriteria($criteria);
     $cached = $queryCache->put($queryKey, $rsm, $result);
     if ($this->cacheLogger) {
         if ($result) {
             $this->cacheLogger->queryCacheMiss($this->regionName, $queryKey);
         }
         if ($cached) {
             $this->cacheLogger->queryCachePut($this->regionName, $queryKey);
         }
     }
     return $result;
 }