commit bb0340b7c49fb2b16b696f7684daf1227cf1fe10
Author: Christian Ehringfeld <c.ehringfeld@t-online.de>
Date:   Tue Oct 6 20:43:11 2015 +0200

    ticket #594

diff --git a/.travis.yml b/.travis.yml
index 2389cef..9aeb84d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -16,6 +16,7 @@ install:
       && sudo apt-get -qq install gcc-5 libc6-i386 qt54tools qt54svg qt54webkit
       && export CXX="g++-5"
       && export CC="gcc-5"
+      && export QMAKE=/usr/lib/x86_64-linux-gnu/qt5/bin/qmake
       ;
     else
          brew update
@@ -27,6 +28,6 @@ install:
     fi
 
 script:
-  -    qmake
+  -  QMAKE
     && make -j 3
     && make check
diff --git a/src/entitymanager.cpp b/src/entitymanager.cpp
index 72b83de..7cc7c23 100644
--- a/src/entitymanager.cpp
+++ b/src/entitymanager.cpp
@@ -525,8 +525,8 @@ void EntityManager::savePrePersistedRelations(const QSharedPointer<Entity>
 void EntityManager::savePostPersistedRelations(const QSharedPointer<Entity>
         &entity, QList<Entity *> &mergedObjects, bool ignoreHasChanged) {
     auto relations = EntityHelper::getRelationProperties(entity.data());
-    auto iterator = relations.constBegin();
-    while (iterator != relations.constEnd()) {
+    for (auto iterator = relations.constBegin(); iterator != relations.constEnd();
+            ++iterator) {
         const Relation r = iterator.key();
         auto var = iterator.value().read(entity.data());
         if (!var.isNull()) {
@@ -540,24 +540,24 @@ void EntityManager::savePostPersistedRelations(const QSharedPointer<Entity>
                     for (int var = 0; var < list.size(); ++var) {
                         auto e = list.at(var);
                         if (this->shouldBeSaved(e, r)) {
-                            this->saveObject(e, mergedObjects, true, ignoreHasChanged);
                             if (fkProp.isValid()) {
-                                EntityHelper::addEntityToListProperty(e, entity, fkProp);
+                                EntityHelper::setProperty(e, entity, fkProp);
                             }
+                            this->saveObject(e, mergedObjects, true, ignoreHasChanged);
                         }
                     }
                 }
             } else if (r.getType() == RelationType::ONE_TO_ONE
                        && !r.getMappedBy().isEmpty()) {
                 auto e =  EntityInstanceFactory::castQVariant(var);
-                this->saveObject(e, mergedObjects, true, ignoreHasChanged);
                 auto fkProp = EntityHelper::mappedProperty(r, e);
                 if (fkProp.isValid()) {
-                    EntityHelper::addEntityToListProperty(e, entity, fkProp);
+                    EntityHelper::setProperty(e, entity, fkProp);
                 }
+                this->saveObject(e, mergedObjects, true, ignoreHasChanged);
+
             }
         }
-        ++iterator;
     }
 }
 
