Programmatically update entry field
I got around this issue by looping through all fields that were of BaseElementFieldType re-setting them to their current value.

$fields = $entry-&gt;getFieldLayout()-&gt;getFields();

$referentialFields = array();
foreach ($fields as $layoutField) {
  $field = $layoutField-&gt;getField();
  if ($field-&gt;getFieldType() instanceof BaseElementFieldType) {
    $referentialFields[$field-&gt;handle] = $entry-&gt;{$field-&gt;handle}-&gt;ids();
  }
}

$entry-&gt;setContentFromPost(array_merge($referentialFields, array(
  'yourField' =&gt; 'yourValue'
)));

craft()-&gt;entries-&gt;saveEntry($entry);