title: JMS serializer - Why are new objects not being instantiated through constructor
body: <p>Why are new entities instantiated with null for all values except the data in the json, why is the entity constructor not setting defaults - putting a die() in the constructor never gets executed.  </p>
  
  <h2>Update:</h2>
  
  <p><em>Ok so digging into the code, when no managed entity is found, JMSS will use the doctrine instantiator class to create the entity - its sole job, to create entities without calling the constructor.  Is there a reason for this? this is inside <code>JMS\Serializer\Construction\UnserializeObjectConstructor</code></em></p>
  
  <hr>
  
  <p>I've configured the object constructor to use the doctrine object constructor written by JMS, but the same issue happens with and without this.</p>
  
  <pre><code>jms_serializer.object_constructor:
      alias: jms_serializer.doctrine_object_constructor
      public: false
  </code></pre>
  
  <p>Existing entities are updated without trouble, however new entities are missing all constructor set defaults.</p>
  
  <p>Under 'fields' element 0 is existing, element 1 is new.  </p>
  
  <pre><code>array (size=3)
    'id' =&gt; int 2
    'name' =&gt; string 'Categories' (length=10)
    'fields' =&gt; 
      array (size=2)
        0 =&gt; 
          array (size=7)
            'id' =&gt; int 49
            'displayName' =&gt; string 'Car Branded' (length=11)
            'type' =&gt; string 'checkboxlist' (length=12)
            'required' =&gt; boolean false
            'disabled' =&gt; boolean false
            'name' =&gt; string 'h49' (length=3)
        1 =&gt; 
          array (size=3)
            'type' =&gt; string 'email' (length=5)
            'name' =&gt; string 'field3491' (length=9)
            'displayName' =&gt; string 'Email' (length=5)
  </code></pre>
  
  <p>The entity looks like this after deserializing:</p>
  
  <pre><code>object(stdClass)[2000]
    public '__CLASS__' =&gt; string 'AppBundle\Entity\FormElement' (length=28)
    public 'id' =&gt; null
    public 'label' =&gt; string 'Email' (length=5)
    public 'type' =&gt; string 'email' (length=5)
    public 'defaultValue' =&gt; null
    public 'required' =&gt; null
    public 'mappedField' =&gt; null
    public 'garbageCollection' =&gt; null
    public 'sortOrder' =&gt; null
    public 'disabled' =&gt; null
    public 'uuid' =&gt; null
    public 'form' =&gt; null
    public 'multiOptions' =&gt; null
    public 'filters' =&gt; null
    public 'submissions' =&gt; null
  </code></pre>
  
  <p>The entity constructor:</p>
  
  <pre><code>public function __construct()
  {
      $this-&gt;required = false;
      $this-&gt;disabled = false;
      $this-&gt;garbageCollection = false;
      $this-&gt;sortOrder = 0;
      $this-&gt;type = 'text';
  }
  </code></pre>
  
  <p>And finally this is how im deserializing:  </p>
  
  <pre><code>$serializer = $this-&gt;get('jms_serializer');
  
  $entryForm = $serializer-&gt;deserialize($json_data, 'AppBundle\Entity\EntryForm', 'json');
  </code></pre>