diff --git a/entity.module b/entity.module
index c79ebd2..c4df05f 100644
--- a/entity.module
+++ b/entity.module
@@ -960,7 +960,7 @@ function entity_entity_info_alter(&$entity_info) {
     $entity_info['comment']['creation callback'] = 'entity_metadata_create_comment';
     $entity_info['comment']['save callback'] = 'comment_save';
     $entity_info['comment']['deletion callback'] = 'comment_delete';
-    $entity_info['comment']['view callback'] = 'entity_metadata_view_single';
+    $entity_info['comment']['view callback'] = 'entity_metadata_view_comment';
   }
   if (module_exists('taxonomy')) {
     $entity_info['taxonomy_term']['access callback'] = 'entity_metadata_taxonomy_access';
diff --git a/modules/callbacks.inc b/modules/callbacks.inc
index eabe349..49a0908 100644
--- a/modules/callbacks.inc
+++ b/modules/callbacks.inc
@@ -686,6 +686,26 @@ function entity_metadata_view_node($entities, $view_mode = 'full', $langcode = N
 }
 
 /**
+ * Callback to view comments.
+ */
+function entity_metadata_view_comment($entities, $view_mode = 'full', $langcode = NULL) {
+  $build = array();// Returned build array.
+  $nodes = array();// The nodes for all comments.
+  $nid_comments = array();// The comments, indexed by nid and then by cid.
+  foreach ($entities as $cid => $comment) {
+    $nid = $comment->nid;
+    $nodes[$nid] = $nid;
+    $nid_comments[$nid][$cid] = $comment;
+  }
+  $nodes = node_load_multiple(array_keys($nodes));
+  foreach ($nid_comments as $nid => $comments) {
+    $node = isset($nodes[$nid]) ? $nodes[$nid] : NULL;
+    $build += comment_view_multiple($comments, $node, $view_mode, 0, $langcode);
+  }
+  return $build;
+}
+
+/**
  * Callback to view an entity, for which just ENTITYTYPE_view() is available.
  */
 function entity_metadata_view_single($entities, $view_mode = 'full', $langcode = NULL, $entity_type) {
