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/edit/lib/Drupal/edit/Tests/EditorSelectionTest.php b/core/modules/edit/lib/Drupal/edit/Tests/EditorSelectionTest.php
index edd1089..9a27e54 100644
--- a/core/modules/edit/lib/Drupal/edit/Tests/EditorSelectionTest.php
+++ b/core/modules/edit/lib/Drupal/edit/Tests/EditorSelectionTest.php
@@ -41,6 +41,8 @@ public static function getInfo() {
   protected function setUp() {
     parent::setUp();
 
+    $this->installSchema('user', array('users'));
+
     $this->editorManager = $this->container->get('plugin.manager.edit.editor');
     $this->editorSelector = new EditorSelector($this->editorManager, $this->container->get('plugin.manager.field.formatter'));
   }
diff --git a/core/modules/edit/lib/Drupal/edit/Tests/MetadataGeneratorTest.php b/core/modules/edit/lib/Drupal/edit/Tests/MetadataGeneratorTest.php
index 327fef9..d6f3923 100644
--- a/core/modules/edit/lib/Drupal/edit/Tests/MetadataGeneratorTest.php
+++ b/core/modules/edit/lib/Drupal/edit/Tests/MetadataGeneratorTest.php
@@ -57,6 +57,8 @@ public static function getInfo() {
   protected function setUp() {
     parent::setUp();
 
+    $this->installSchema('user', array('users'));
+
     $this->editorManager = $this->container->get('plugin.manager.edit.editor');
     $this->accessChecker = new MockEditEntityFieldAccessCheck();
     $this->editorSelector = new EditorSelector($this->editorManager, $this->container->get('plugin.manager.field.formatter'));
diff --git a/core/modules/editor/lib/Drupal/editor/Tests/EditIntegrationTest.php b/core/modules/editor/lib/Drupal/editor/Tests/EditIntegrationTest.php
index b0075d2..856ac11 100644
--- a/core/modules/editor/lib/Drupal/editor/Tests/EditIntegrationTest.php
+++ b/core/modules/editor/lib/Drupal/editor/Tests/EditIntegrationTest.php
@@ -70,6 +70,7 @@ public function setUp() {
 
     // Install the Filter module.
     $this->installSchema('system', 'url_alias');
+    $this->installSchema('user', array('users'));
     $this->enableModules(array('user', 'filter'));
 
     // Enable the Text Editor and Text Editor Test module.
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..bd72220 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,11 +20,16 @@ class ConfigurableEntityReferenceFieldItemList extends FieldItemList {
   protected function getDefaultValue() {
     $default_value = parent::getDefaultValue();
 
-    if ($default_value) {
+    if ($default_value && is_array($default_value)) {
       // Convert UUIDs to numeric IDs.
       $uuids = array();
       $fixed = array();
       foreach ($default_value as $delta => $properties) {
+        // Only convert UUIDs if there is at least one actual target_uuid
+        // default value specified.
+        if (!isset($properties['target_uuid'])) {
+          return $default_value;
+        }
         if ($properties['target_uuid'] == 'anonymous' || $properties['target_uuid'] == 'administrator') {
           $fixed[$delta] = ($properties['target_uuid'] == 'anonymous') ? '0' : '1';
         }
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/Controller/NodeController.php b/core/modules/node/lib/Drupal/node/Controller/NodeController.php
index 273f441..c0738ff 100644
--- a/core/modules/node/lib/Drupal/node/Controller/NodeController.php
+++ b/core/modules/node/lib/Drupal/node/Controller/NodeController.php
@@ -62,12 +62,9 @@ public function addPage() {
    *   A node submission form.
    */
   public function add(NodeTypeInterface $node_type) {
-    $account = $this->currentUser();
     $langcode = $this->moduleHandler()->invoke('language', 'get_default_langcode', array('node', $node_type->type));
 
     $node = $this->entityManager()->getStorageController('node')->create(array(
-      'uid' => $account->id(),
-      'name' => $account->getUsername() ?: '',
       'type' => $node_type->type,
       'langcode' => $langcode ? $langcode : $this->languageManager()->getCurrentLanguage()->id,
     ));
diff --git a/core/modules/node/lib/Drupal/node/Entity/Node.php b/core/modules/node/lib/Drupal/node/Entity/Node.php
index 04eac36..8ea5996 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;
@@ -379,14 +380,10 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
       ))
       ->setDisplayConfigurable('form', TRUE);
 
-    $fields['uid'] = FieldDefinition::create('entity_reference')
-      ->setLabel(t('Author'))
-      ->setDescription(t('The user that is the node author.'))
+    $fields['uid'] = OwnerFieldDefinition::create()
+      ->setLabel(t('User ID'))
+      ->setDescription(t('The user ID of the node author.'))
       ->setRevisionable(TRUE)
-      ->setSettings(array(
-        'target_type' => 'user',
-        'default_value' => 0,
-      ))
       ->setTranslatable(TRUE);
 
     $fields['status'] = FieldDefinition::create('boolean')
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..6131e3c
--- /dev/null
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeOwnerDefaultTest.php
@@ -0,0 +1,53 @@
+<?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 author 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 author default 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/lib/Drupal/system/Tests/Entity/EntityAccessTest.php b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityAccessTest.php
index ee64237..3205301 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityAccessTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityAccessTest.php
@@ -48,9 +48,11 @@ function assertEntityAccess($ops, AccessibleInterface $object, AccountInterface
    * Ensures entity access is properly working.
    */
   function testEntityAccess() {
+    $originial_user = \Drupal::currentUser();
     // Set up a non-admin user that is allowed to view test entities.
     global $user;
     $user = $this->createUser(array('uid' => 2), array('view test entity'));
+    \Drupal::getContainer()->set('current_user', $user);
     $entity = entity_create('entity_test', array(
       'name' => 'test',
     ));
@@ -63,6 +65,9 @@ function testEntityAccess() {
       'view' => TRUE,
     ), $entity);
 
+    // Restore the original user.
+    \Drupal::getContainer()->set('current_user', $originial_user);
+
     // The custom user is not allowed to perform any operation on test entities.
     $custom_user = $this->createUser();
     $this->assertEntityAccess(array(
@@ -99,7 +104,7 @@ function testEntityAccessDefaultController() {
    * Ensures entity access for entity translations is properly working.
    */
   function testEntityTranslationAccess() {
-
+    $originial_user = \Drupal::currentUser();
     // Set up a non-admin user that is allowed to view test entity translations.
     global $user;
     $user = $this->createUser(array('uid' => 2), array('view test entity translations'));
@@ -123,6 +128,9 @@ function testEntityTranslationAccess() {
     $this->assertEntityAccess(array(
       'view' => TRUE,
     ), $translation);
+
+    // Restore the original user.
+    \Drupal::getContainer()->set('current_user', $originial_user);
   }
 
   /**
diff --git a/core/modules/system/lib/Drupal/system/Tests/TypedData/TypedDataTest.php b/core/modules/system/lib/Drupal/system/Tests/TypedData/TypedDataTest.php
index 5893f7b..b39cd24 100644
--- a/core/modules/system/lib/Drupal/system/Tests/TypedData/TypedDataTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/TypedData/TypedDataTest.php
@@ -45,6 +45,7 @@ public function setUp() {
     parent::setup();
 
     $this->installSchema('file', array('file_managed', "file_usage"));
+    $this->installSchema('user', array('users'));
     $this->typedDataManager = $this->container->get('typed_data_manager');
   }
 
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 1f93df1..e6e28f2 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;
@@ -88,10 +89,9 @@ 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'))
       ->setTranslatable(TRUE);
 
     return $fields;
diff --git a/core/modules/views/lib/Drupal/views/Tests/QueryGroupByTest.php b/core/modules/views/lib/Drupal/views/Tests/QueryGroupByTest.php
index b35f020..9856d7d 100644
--- a/core/modules/views/lib/Drupal/views/Tests/QueryGroupByTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/QueryGroupByTest.php
@@ -50,6 +50,7 @@ protected function setUp() {
     parent::setUp();
 
     $this->installSchema('entity_test', array('entity_test'));
+    $this->installSchema('user', array('users'));
 
     $this->storageController = $this->container->get('entity.manager')->getStorageController('entity_test');
   }
