commit d2c33642aa3ef074e4b9633a8b69f23960bdca28
Author: Christian Ehringfeld <c.ehringfeld@t-online.de>
Date:   Sun Aug 9 23:54:31 2015 +0200

    temporary fix for #578

diff --git a/samples/example/main.cpp b/samples/example/main.cpp
index 76868a5..ff380a3 100644
--- a/samples/example/main.cpp
+++ b/samples/example/main.cpp
@@ -109,12 +109,12 @@ int main(int argc, char *argv[]) {
     q.setLimit(10);
     QList<QSharedPointer<Pupil>> list = e->find<Pupil>(q, true);
     for (int i = 0; i < list.size(); ++i) {
-//        qWarning() << "-----------------------------";
-//        qWarning() << "Merge Pupil";
-//        qWarning() << "-----------------------------";
-//        list.at(i)->setBirthday(QDate(2222,12,22));
-//        QSharedPointer<Entity> pupilE = list.at(i).objectCast<Entity>();
-//        e->merge(pupilE,true);
+        qWarning() << "-----------------------------";
+        qWarning() << "Merge Pupil";
+        qWarning() << "-----------------------------";
+        list.at(i)->setBirthday(QDate(2222,12,22));
+        QSharedPointer<Entity> pupilE = list.at(i).objectCast<Entity>();
+        e->merge(pupilE,true);
         qWarning() << list.at(i)->toString();
     }
     qWarning() << "-----------------------------";
diff --git a/src/entitymanager.cpp b/src/entitymanager.cpp
index 8ef2b93..aace5d4 100644
--- a/src/entitymanager.cpp
+++ b/src/entitymanager.cpp
@@ -181,7 +181,7 @@ bool EntityManager::validate(QSharedPointer<Entity> &entity) {
 
 bool EntityManager::hasChanged(QSharedPointer<Entity> &entity) {
     bool changed = true;
-    if (entity->getId() >= -1) {
+    if (entity->getId() > -1) {
         changed = false;
         auto listmap = this->findByPk(entity->getId(), entity);
         auto relations = entity->getRelations();
@@ -215,7 +215,6 @@ bool EntityManager::hasChanged(QSharedPointer<Entity> &entity) {
                 }
             }
         }
-
     }
     return changed;
 }
@@ -571,7 +570,7 @@ const QList<QSharedPointer<Entity> > &list, const Relation &r) {
     QSharedPointer<Entity> ptr;
     for (int var = 0; var < list.size(); ++var) {
         ptr = list.at(var);
-        if (this->shouldBeSaved(ptr, r) && this->save(ptr)) {
+        if (this->shouldBeSaved(ptr, r) && this->hasChanged(ptr) && this->save(ptr)) {
             saved.append(ptr);
         }
     }
diff --git a/src/querybuilder.cpp b/src/querybuilder.cpp
index 5bddb65..b43eff9 100644
--- a/src/querybuilder.cpp
+++ b/src/querybuilder.cpp
@@ -70,7 +70,6 @@ bool QueryBuilder::createIndices(const QSharedPointer<Entity> &entity) const {
         queries.append(superIndex);
     }
     queries.append(this->relationFks(entity));
-    qDebug() << "create index:" << entity->getTablename() << queries.size();
     ok = this->database->transaction(queries);
     return ok;
 }
