code: @Override
      public T get(Object primaryKeyValue) throws PersistenceException {
          try {
              CacheLoader<T> loader;
              
              loader = new CacheLoader<T>() {
                  public T load(Object ... args) {
                      SearchTerm[] terms = new SearchTerm[1];
                      Collection<T> list;
                      
                      terms[0] = new SearchTerm((String)args[0], Operator.EQUALS, args[1]);
                      try {
                          list = RelationalHSCache.this.load(getLoader(terms, null), null, toParams(terms));
                      }
                      catch( PersistenceException e ) {
                          try {
                              try { Thread.sleep(1000L); }
                              catch( InterruptedException ignore ) { }
                              list = RelationalHSCache.this.load(getLoader(terms, null), null, toParams(terms));
                          }
                          catch( Throwable forgetIt ) {
                              logger.error(forgetIt.getMessage(), forgetIt);
                              throw new RuntimeException(e);
                          }
                      }
                      if( list.isEmpty() ) {
                          return null;
                      }
                      return list.iterator().next();
                  }
              };
              logger.debug("Executing cache find...");
              try {
                  return getCache().find(getPrimaryKeyField(), primaryKeyValue, loader, getPrimaryKeyField(), primaryKeyValue);
              }
              catch( CacheManagementException e ) {
                  throw new PersistenceException(e);
              }
              catch( RuntimeException e ) {
                  Throwable t = e.getCause();
                  
                  if( t != null && t instanceof PersistenceException ) {
                      throw (PersistenceException)t;
                  }
                  if( logger.isDebugEnabled() ) {
                      logger.error(e.getMessage(), e);
                  }
                  throw new PersistenceException(e);
              }
              finally {
                  logger.debug("Executed.");
              }
          }
          finally {
              logger.debug("exit - get(String,Object)");
          }
      }
docs: Retrieves the object uniquely identified by the value for the specified ID field.
  @param primaryKeyValue the ID field identifying the object
  @return the object matching the query criterion
  @throws PersistenceException an error occurred talking to the data store