diff --git a/contrib/search_api_views/includes/query.inc b/contrib/search_api/contrib/search_api_views/includes/query.inc
index 0ba8f38..262251a 100644
--- a/contrib/search_api/contrib/search_api_views/includes/query.inc
+++ b/ontrib/search_api/contrib/search_api_views/includes/query.inc
@@ -351,8 +351,8 @@ class SearchApiViewsQuery extends views_plugin_query {
    * If the current query isn't based on an entity type, the method will return
    * an empty array.
    */
-  public function get_result_entities($results, $relationship = NULL, $field = NULL) {
-    list($type, $wrappers) = $this->get_result_wrappers($results, $relationship, $field);
+  public function get_result_entities($results, $handler) {
+    list($type, $wrappers) = $this->get_result_wrappers($results, $handler);
     $return = array();
     foreach ($wrappers as $id => $wrapper) {
       try {
@@ -371,7 +371,9 @@ class SearchApiViewsQuery extends views_plugin_query {
    * This is necessary to support generic entity handlers and plugins with this
    * query backend.
    */
-  public function get_result_wrappers($results, $relationship = NULL, $field = NULL) {
+  public function get_result_wrappers($results, $handler) {
+    $selector = EntityFieldHandlerHelper::construct_property_selector($handler);
+    list($selector) = explode(':', $selector);
     $is_entity = (boolean) entity_get_info($this->index->item_type);
     $wrappers = array();
     $load_entities = array();
@@ -381,8 +383,11 @@ class SearchApiViewsQuery extends views_plugin_query {
         if (!is_object($row->entity)) {
           $load_entities[$row->entity] = $row_index;
         }
-
-        $wrappers[$row_index] = $this->index->entityWrapper($row->entity);
+        $wrapper = $this->index->entityWrapper($row->entity);
+        if (!empty($selector) && ($wrapper->$selector instanceof EntityDrupalWrapper && $wrapper->$selector->type() != $this->index->item_type)) {
+          $wrapper = entity_metadata_wrapper($wrapper->$selector->type(), $row->_entity_properties[$selector]);
+        }
+        $wrappers[$row_index] = $wrapper;
       }
     }
 
@@ -394,26 +399,7 @@ class SearchApiViewsQuery extends views_plugin_query {
         $wrappers[$load_entities[$entity_id]] = $this->index->entityWrapper($entity);
       }
     }
-
-    // Apply the relationship, if necessary.
-    $type = $this->index->item_type;
-    $selector_suffix = '';
-    if ($field && ($pos = strrpos($field, ':'))) {
-      $selector_suffix = substr($field, 0, $pos);
-    }
-    if ($selector_suffix || ($relationship && !empty($this->view->relationship[$relationship]))) {
-      // Use EntityFieldHandlerHelper to compute the correct data selector for
-      // the relationship.
-      $handler = (object) array(
-        'view' => $this->view,
-        'relationship' => $relationship,
-        'real_field' => '',
-      );
-      $selector = EntityFieldHandlerHelper::construct_property_selector($handler);
-      $selector .= ($selector ? ':' : '') . $selector_suffix;
-      list($type, $wrappers) = EntityFieldHandlerHelper::extract_property_multiple($wrappers, $selector);
-    }
-
+    $type = isset($wrapper) ? $wrapper->type() : $this->index->item_type;
     return array($type, $wrappers);
   }
 
