public static function QueryArrayCached(QQCondition $objConditions, $objOptionalClauses = null, $mixParameterArray = null, $blnForceUpdate = false)
 {
     // Get the Database Object for this Class
     $objDatabase = NarroPermission::GetDatabase();
     $strQuery = NarroPermission::BuildQueryStatement($objQueryBuilder, $objConditions, $objOptionalClauses, $mixParameterArray, false);
     $objCache = new QCache('qquery/narropermission', $strQuery);
     $cacheData = $objCache->GetData();
     if (!$cacheData || $blnForceUpdate) {
         $objDbResult = $objQueryBuilder->Database->Query($strQuery);
         $arrResult = NarroPermission::InstantiateDbResult($objDbResult, $objQueryBuilder->ExpandAsArrayNodes, $objQueryBuilder->ColumnAliasArray);
         $objCache->SaveData(serialize($arrResult));
     } else {
         $arrResult = unserialize($cacheData);
     }
     return $arrResult;
 }