diff --git a/src/DynamicEntityReferenceFieldItemList.php b/src/DynamicEntityReferenceFieldItemList.php
index af595ee..5f3cdcb 100644
--- a/src/DynamicEntityReferenceFieldItemList.php
+++ b/src/DynamicEntityReferenceFieldItemList.php
@@ -131,4 +131,15 @@ class DynamicEntityReferenceFieldItemList extends EntityReferenceFieldItemList {
     return $default_value;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function validate() {
+    $return = parent::validate();
+    foreach ($this->list as $item) {
+      $return->addAll($item->validate());
+    }
+    return $return;
+  }
+
 }
diff --git a/src/Plugin/DataType/DynamicEntityReference.php b/src/Plugin/DataType/DynamicEntityReference.php
index b7e2a17..7793a14 100644
--- a/src/Plugin/DataType/DynamicEntityReference.php
+++ b/src/Plugin/DataType/DynamicEntityReference.php
@@ -61,4 +61,13 @@ class DynamicEntityReference extends EntityReference {
     return $this->target;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function getConstraints() {
+    $this->definition->addConstraint('Bundle', ['bundle' => $this->parent->parent->getSetting($this->parent->getValue()['target_type'])['handler_settings']['target_bundles']]);
+    $constraints = parent::getConstraints();
+    return $constraints;
+  }
+
 }
diff --git a/src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php b/src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php
index 44e5a35..55ed36a 100644
--- a/src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php
+++ b/src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php
@@ -472,4 +472,13 @@ class DynamicEntityReferenceItem extends ConfigurableEntityReferenceItem {
     return $target_types;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function validate() {
+    $return = parent::validate();
+    $return->addAll($this->get('entity')->validate());
+    return $return;
+  }
+
 }
diff --git a/src/Plugin/Validation/Constraint/ValidDynamicReferenceConstraint.php b/src/Plugin/Validation/Constraint/ValidDynamicReferenceConstraint.php
index a35d857..d898cef 100644
--- a/src/Plugin/Validation/Constraint/ValidDynamicReferenceConstraint.php
+++ b/src/Plugin/Validation/Constraint/ValidDynamicReferenceConstraint.php
@@ -26,6 +26,7 @@ class ValidDynamicReferenceConstraint extends Constraint {
    *
    * @var string
    */
-  public $message = 'The referenced entity (%type: %id) does not exist.';
+  public $wrongIDMessage = 'The referenced entity (%type: %id) does not exist.';
+  public $wrongTypeMessage = 'The referenced entity (%type: %id) is not allowed for this field.';
 
 }
diff --git a/src/Plugin/Validation/Constraint/ValidDynamicReferenceConstraintValidator.php b/src/Plugin/Validation/Constraint/ValidDynamicReferenceConstraintValidator.php
index e429fe8..0fba979 100644
--- a/src/Plugin/Validation/Constraint/ValidDynamicReferenceConstraintValidator.php
+++ b/src/Plugin/Validation/Constraint/ValidDynamicReferenceConstraintValidator.php
@@ -20,6 +20,7 @@ class ValidDynamicReferenceConstraintValidator extends ConstraintValidator {
    * {@inheritdoc}
    */
   public function validate($value, Constraint $constraint) {
+    /* @var \Drupal\dynamic_entity_reference\Plugin\Validation\Constraint\ValidDynamicReferenceConstraint $constraint */
     /* @var \Drupal\Core\Field\FieldItemInterface $value */
     if (!isset($value)) {
       return;
@@ -32,10 +33,13 @@ class ValidDynamicReferenceConstraintValidator extends ConstraintValidator {
     if (empty($id) && $valid_type) {
       return;
     }
+    if (!$valid_type) {
+      $this->context->addViolation($constraint->wrongTypeMessage, array('%type' => $type, '%id' => $id));
+    }
     $referenced_entity = $value->get('entity')->getValue();
-    /** @var \Drupal\dynamic_entity_reference\Plugin\Validation\Constraint\ValidDynamicReferenceConstraint $constraint */
-    if (!$valid_type || !$referenced_entity) {
-      $this->context->addViolation($constraint->message, array('%type' => $type, '%id' => $id));
+    if (!$referenced_entity) {
+      $this->context->addViolation($constraint->wrongIDMessage, array('%type' => $type, '%id' => $id));
     }
   }
+
 }
