diff --git a/core/lib/Drupal/Core/Field/OwnerFieldDefinition.php b/core/lib/Drupal/Core/Field/OwnerFieldDefinition.php
new file mode 100644
index 0000000..c622a7d
--- /dev/null
+++ b/core/lib/Drupal/Core/Field/OwnerFieldDefinition.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\Field\OwnerFieldDefinition.
+ */
+
+namespace Drupal\Core\Field;
+
+use Drupal\Component\Utility\String;
+use Drupal\Core\Entity\EntityInterface;
+use Drupal\Core\Field\FieldDefinition;
+
+/**
+ * Field definition which provides the current user as default value.
+ */
+class OwnerFieldDefinition extends FieldDefinition {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getDefaultValue(EntityInterface $entity) {
+    return \Drupal::currentUser()->id();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create($type = 'entity_reference') {
+    if ($type != 'entity_reference') {
+      throw new \InvalidArgumentException(String::format_string('The type for owner field definitions must be entity_reference, but @type was passed.', array('@type' => $type)));
+    }
+    $definition = parent::create($type);
+    $definition->setSetting('target_type', 'user');
+    return $definition;
+  }
+
+}
diff --git a/core/modules/comment/lib/Drupal/comment/Entity/Comment.php b/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
index 6fd4552..51ec012 100644
--- a/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
+++ b/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
@@ -13,6 +13,7 @@
 use Drupal\Core\Entity\EntityStorageControllerInterface;
 use Drupal\Core\Entity\EntityTypeInterface;
 use Drupal\Core\Field\FieldDefinition;
+use Drupal\Core\Field\OwnerFieldDefinition;
 use Drupal\Core\Language\Language;
 use Drupal\Core\TypedData\DataDefinition;
 use Drupal\user\UserInterface;
@@ -237,13 +238,9 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
       ->setDescription(t('The comment title or subject.'))
       ->setSetting('max_length', 64);
 
-    $fields['uid'] = FieldDefinition::create('entity_reference')
+    $fields['uid'] = OwnerFieldDefinition::create()
       ->setLabel(t('User ID'))
-      ->setDescription(t('The user ID of the comment author.'))
-      ->setSettings(array(
-        'target_type' => 'user',
-        'default_value' => 0,
-      ));
+      ->setDescription(t('The user ID of the comment author.'));
 
     $fields['name'] = FieldDefinition::create('string')
       ->setLabel(t('Name'))
diff --git a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldType/ConfigurableEntityReferenceFieldItemList.php b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldType/ConfigurableEntityReferenceFieldItemList.php
index 3b95917..d70ccb1 100644
--- a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldType/ConfigurableEntityReferenceFieldItemList.php
+++ b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldType/ConfigurableEntityReferenceFieldItemList.php
@@ -20,7 +20,9 @@ class ConfigurableEntityReferenceFieldItemList extends FieldItemList {
   protected function getDefaultValue() {
     $default_value = parent::getDefaultValue();
 
-    if ($default_value) {
+    // Only convert UUIDs if there is at least one actual target_uuid default
+    // value specified.
+    if ($default_value && isset($default_value[0]['target_uuid'])) {
       // Convert UUIDs to numeric IDs.
       $uuids = array();
       $fixed = array();
diff --git a/core/modules/file/lib/Drupal/file/Entity/File.php b/core/modules/file/lib/Drupal/file/Entity/File.php
index 4618986..392c152 100644
--- a/core/modules/file/lib/Drupal/file/Entity/File.php
+++ b/core/modules/file/lib/Drupal/file/Entity/File.php
@@ -11,6 +11,7 @@
 use Drupal\Core\Entity\EntityStorageControllerInterface;
 use Drupal\Core\Entity\EntityTypeInterface;
 use Drupal\Core\Field\FieldDefinition;
+use Drupal\Core\Field\OwnerFieldDefinition;
 use Drupal\Core\Language\Language;
 use Drupal\file\FileInterface;
 use Drupal\user\UserInterface;
@@ -244,10 +245,9 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
       ->setLabel(t('Language code'))
       ->setDescription(t('The file language code.'));
 
-    $fields['uid'] = FieldDefinition::create('entity_reference')
+    $fields['uid'] = OwnerFieldDefinition::create()
       ->setLabel(t('User ID'))
-      ->setDescription(t('The user ID of the file.'))
-      ->setSetting('target_type', 'user');
+      ->setDescription(t('The user ID of the file.'));
 
     $fields['filename'] = FieldDefinition::create('string')
       ->setLabel(t('Filename'))
diff --git a/core/modules/node/lib/Drupal/node/Entity/Node.php b/core/modules/node/lib/Drupal/node/Entity/Node.php
index da4b174..f07c1ee 100644
--- a/core/modules/node/lib/Drupal/node/Entity/Node.php
+++ b/core/modules/node/lib/Drupal/node/Entity/Node.php
@@ -11,6 +11,7 @@
 use Drupal\Core\Entity\EntityStorageControllerInterface;
 use Drupal\Core\Entity\EntityTypeInterface;
 use Drupal\Core\Field\FieldDefinition;
+use Drupal\Core\Field\OwnerFieldDefinition;
 use Drupal\Core\Language\Language;
 use Drupal\Core\Session\AccountInterface;
 use Drupal\node\NodeInterface;
@@ -377,13 +378,9 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
       ))
       ->setDisplayConfigurable('form', TRUE);
 
-    $fields['uid'] = FieldDefinition::create('entity_reference')
+    $fields['uid'] = OwnerFieldDefinition::create()
       ->setLabel(t('User ID'))
-      ->setDescription(t('The user ID of the node author.'))
-      ->setSettings(array(
-        'target_type' => 'user',
-        'default_value' => 0,
-      ));
+      ->setDescription(t('The user ID of the node author.'));
 
     $fields['status'] = FieldDefinition::create('boolean')
       ->setLabel(t('Publishing status'))
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeOwnerDefaultTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeOwnerDefaultTest.php
new file mode 100644
index 0000000..2acbfaf
--- /dev/null
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeOwnerDefaultTest.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\node\Tests\NodeOwnerDefaultTest.
+ */
+
+namespace Drupal\node\Tests;
+
+use Drupal\system\Tests\Entity\EntityUnitTestBase;
+
+class NodeOwnerDefaultTest extends EntityUnitTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('node');
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function getInfo() {
+    return array(
+      'name' => 'Node owner default',
+      'description' => 'Tests the node uid field default value.',
+      'group' => 'Node',
+    );
+  }
+
+  /**
+   * Tests that a created node has the current user set as author.
+   */
+  public function testOwnerDefault() {
+    $user = $this->createUser();
+    $this->container->set('current_user', $user);
+    $node = entity_create('node', array('type' => 'page', 'title' => 'test'));
+    $this->assertEqual($node->getOwnerId(), $user->id(), 'Node owner is the current user.');
+  }
+
+  /**
+   * Tests that the current user is set as author when entity_reference module
+   * is enabled.
+   */
+  public function testOwnerDefaultWithER() {
+    $this->container->get('module_handler')->install(array('entity_reference'));
+    $user = $this->createUser();
+    $this->container->set('current_user', $user);
+    $node = entity_create('node', array('type' => 'page', 'title' => 'test'));
+    $this->assertEqual($node->getOwnerId(), $user->id(), 'Node owner is the current user.');
+  }
+
+}
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTest.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTest.php
index 357b77e..2f261ec 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTest.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTest.php
@@ -10,6 +10,7 @@
 use Drupal\Core\Entity\ContentEntityBase;
 use Drupal\Core\Entity\EntityTypeInterface;
 use Drupal\Core\Field\FieldDefinition;
+use Drupal\Core\Field\OwnerFieldDefinition;
 use Drupal\Core\Entity\EntityStorageControllerInterface;
 use Drupal\Core\Language\Language;
 use Drupal\user\EntityOwnerInterface;
@@ -136,7 +137,7 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
       ->setDescription(t('The bundle of the test entity.'))
       ->setRequired(TRUE);
 
-    $fields['user_id'] = FieldDefinition::create('entity_reference')
+    $fields['user_id'] = OwnerFieldDefinition::create()
       ->setLabel(t('User ID'))
       ->setDescription(t('The ID of the associated user.'))
       ->setSettings(array('target_type' => 'user'))
