diff --git a/lib/Doctrine/Record.php b/lib/Doctrine/Record.php
index d302769..28a344c 100644
--- a/lib/Doctrine/Record.php
+++ b/lib/Doctrine/Record.php
@@ -2518,6 +2518,10 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count
 
         if ( ! $this->exists() || $now === false) {
             $relTable = $this->getTable()->getRelation($alias)->getTable();
+            if (is_array($relTable->getIdentifier())) {
+                return $this;
+            }
+            
             $records = $relTable->createQuery()
                 ->whereIn($relTable->getIdentifier(), $ids)
                 ->execute();
@@ -2585,6 +2589,9 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count
                 $record->save();
             }
         } else if ($rel instanceof Doctrine_Relation_ForeignKey) {
+            if (is_array($rel->getTable()->getIdentifier())) {
+                return $this;
+            }
             $q = $rel->getTable()
                 ->createQuery()
                 ->update()
@@ -2596,6 +2603,9 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count
 
             $q->execute();
         } else if ($rel instanceof Doctrine_Relation_LocalKey) {
+            if (is_array($rel->getTable()->getIdentifier())) {
+                return $this;
+            }
             $q = $this->getTable()
                 ->createQuery()
                 ->update()
