diff --git a/core/lib/Drupal/Core/TypedData/DataDefinition.php b/core/lib/Drupal/Core/TypedData/DataDefinition.php
index 9d036a2..937f243 100644
--- a/core/lib/Drupal/Core/TypedData/DataDefinition.php
+++ b/core/lib/Drupal/Core/TypedData/DataDefinition.php
@@ -275,13 +275,17 @@ public function getConstraint($constraint_name) {
   /**
    * Sets the array of validation constraints.
    *
-   * See \Drupal\Core\TypedData\TypedDataManager::getConstraints() for details.
+   * NOTE: This will override any previously set constraints. In most cases
+   * DataDefinition::addConstraint() should be used instead.
    *
    * @param array $constraints
-   *   The array of constraints.
+   *   The array of constraints. See
+   *   \Drupal\Core\TypedData\TypedDataManager::getConstraints() for details.
    *
-   * @return static
-   *   The object itself for chaining.
+   * @return $this
+   *
+   * @see \Drupal\Core\TypedData\DataDefinition::addConstraint()
+   * @see \Drupal\Core\TypedData\DataDefinition::getConstraints()
    */
   public function setConstraints(array $constraints) {
     $this->definition['constraints'] = $constraints;
diff --git a/core/modules/comment/lib/Drupal/comment/Entity/Comment.php b/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
index 82a3dab..b205ecb 100644
--- a/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
+++ b/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
@@ -252,7 +252,7 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
         'default_value' => '',
         'max_length' => 60,
       ))
-      ->setConstraints(array('CommentName' => array()));
+      ->addConstraint('CommentName', array());
 
     $fields['mail'] = FieldDefinition::create('email')
       ->setLabel(t('Email'))
diff --git a/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListTextItem.php b/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListTextItem.php
index 6180368..754d397 100644
--- a/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListTextItem.php
+++ b/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListTextItem.php
@@ -27,10 +27,9 @@ class ListTextItem extends ListItemBase {
    * {@inheritdoc}
    */
   public static function propertyDefinitions(FieldDefinitionInterface $field_definition) {
-    $constraints = array('Length' => array('max' => 255));
     $properties['value'] = DataDefinition::create('string')
       ->setLabel(t('Text value'))
-      ->setConstraints($constraints);
+      ->addConstraint('Length', array('max' => 255));
 
     return $properties;
   }
diff --git a/core/modules/user/user.module b/core/modules/user/user.module
index 91a6f25..31db053 100644
--- a/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -339,7 +339,7 @@ function user_load_by_name($name) {
  */
 function user_validate_name($name) {
   $definition = DataDefinition::create('string')
-    ->setConstraints(array('UserName' => array()));
+    ->addConstraint('UserName', array());
   $data = \Drupal::typedDataManager()->create($definition);
   $data->setValue($name);
   $violations = $data->validate();
