diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php
index ca54aa8..342d081 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php
@@ -73,11 +73,10 @@ public static function propertyDefinitions(FieldStorageDefinitionInterface $fiel
     $target_type_info = \Drupal::entityManager()->getDefinition($settings['target_type']);
 
     if ($target_type_info->isSubclassOf('\Drupal\Core\Entity\FieldableEntityInterface')) {
-      // @todo: Lookup the entity type's ID data type and use it here.
-      // https://drupal.org/node/2107249
-      $target_id_definition = DataDefinition::create('integer')
+      $id_definition = \Drupal::entityManager()->getBaseFieldDefinitions($settings['target_type'])[$target_type_info->getKey('id')];
+      $target_id_definition = DataDefinition::create($id_definition->getType())
         ->setLabel(t('@label ID', array($target_type_info->getLabel())))
-        ->setSetting('unsigned', TRUE);
+        ->setSettings($id_definition->getSettings());
     }
     else {
       $target_id_definition = DataDefinition::create('string')
