Set Entries field in Commerce order on completion
See What is getContent() / the ContentModel, and how do I use it to get and set custom field values?

So you needed to change the method used for setting content on an element.

Also see In a plugin, how do I save an entry with a related entry

So the relation fields always expect an array of ids, even if there is a single relation. 

Putting those together you should be able to do:

craft()-&gt;on('commerce_orders.onOrderComplete',function($event){    
    $order = $event-&gt;params['order'];

    $order-&gt;setContentFromPost(['entryRelaionFieldName' =&gt; [678] ]);

    craft()-&gt;commerce_orders-&gt;saveOrder($order);    
});