commit 1701766b2c796274e6cfe92f35fe68bc95e17de2
Author: Christian Ehringfeld <c.ehringfeld@t-online.de>
Date:   Tue Oct 6 16:18:44 2015 +0200

    ticket #596

diff --git a/README.md b/README.md
index 2499051..f542049 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # CuteEntityManager for Qt
 
-[![Build status](https://ci.appveyor.com/api/projects/status/upd727lxpxvvxo2v/branch/master?svg=true)](https://ci.appveyor.com/project/Professi/cuteentitymanager/branch/master)
+[![Build status](https://ci.appveyor.com/api/projects/status/upd727lxpxvvxo2v?svg=true)](https://ci.appveyor.com/project/Professi/cuteentitymanager)
 
 ## English
 With CuteEntityManager it is possible to persist, merge, find or delete 
diff --git a/src/database.cpp b/src/database.cpp
index 1efd4bd..e39b301 100644
--- a/src/database.cpp
+++ b/src/database.cpp
@@ -133,7 +133,8 @@ bool Database::commitTransaction() {
 }
 
 bool Database::rollbackTransaction() {
-    this->logger->logMsg("Transaction rolled back!" + this->database.lastError().text(),MsgType::WARNING);
+    this->logger->logMsg("Transaction rolled back!" +
+                         this->database.lastError().text(), MsgType::WARNING);
     return supportTransactions && this->database.rollback();
 }
 
diff --git a/src/entityinstancefactory.cpp b/src/entityinstancefactory.cpp
index 6927ca6..c886fb9 100644
--- a/src/entityinstancefactory.cpp
+++ b/src/entityinstancefactory.cpp
@@ -127,7 +127,12 @@ Entity *EntityInstanceFactory::newSuperClassInstance(const Entity *e) {
 }
 
 Entity *EntityInstanceFactory::createInstance(const QMetaObject *object) {
-    return qobject_cast<Entity *>(object->newInstance());
+    auto o = object->newInstance();
+    if(o) {
+        return qobject_cast<Entity *>(o);
+    } else {
+        return EntityInstanceFactory::createInstance(object->className());
+    }
 }
 
 QList<QSharedPointer<Entity> > EntityInstanceFactory::castQVariantList(
diff --git a/src/entitymanager.cpp b/src/entitymanager.cpp
index f97fb2e..72b83de 100644
--- a/src/entitymanager.cpp
+++ b/src/entitymanager.cpp
@@ -45,6 +45,7 @@ EntityManager::EntityManager(QSqlDatabase database, bool logQueries,
 }
 
 void EntityManager::init(bool inspect, const MsgType msgType) {
+    EntityInstanceFactory::registerClass<DatabaseMigration>();
     auto schema = Database::getSchema(Database::getDatabaseType(
                                           this->db->getDatabase().driverName()), this->db);
     this->schema = QSharedPointer<Schema>(schema);
diff --git a/src/querybuilder.cpp b/src/querybuilder.cpp
index c762780..d42b300 100644
--- a/src/querybuilder.cpp
+++ b/src/querybuilder.cpp
@@ -984,8 +984,7 @@ QList<QueryBuilder::ClassAttributes> QueryBuilder::inheritedAttributes(
         QSharedPointer<Entity> e;
         for (int var = classes.size() - 1; var >= 0; --var) {
             auto metaObj = classes.at(var);
-            e = QSharedPointer<Entity>(EntityInstanceFactory::createInstance(
-                                           metaObj));
+            e = QSharedPointer<Entity>(EntityInstanceFactory::createInstance(metaObj));
             if (e) {
                 list.append(QueryBuilder::ClassAttributes(e->getTablename(),
                             this->saveAttributes(entity, this->processProperties(e, usedProperties),
@@ -1098,12 +1097,13 @@ QString QueryBuilder::attributes(const QHash<QString, QVariant> &m,
                                  bool ignoreID, const QString &primaryKey) const {
     QString rc = "";
     for (auto i = m.constBegin(); i != m.constEnd(); ++i) {
-            if (!ignoreID || (ignoreID && i.key() != primaryKey)) {
-                if (!rc.isEmpty()) {
-                    rc += " " + conjunction + " ";
-                }
-                rc += this->schema->quoteColumnName(i.key()) + (i.value().isNull() ? " is null":"=" + this->placeHolder(i.key()));
+        if (!ignoreID || (ignoreID && i.key() != primaryKey)) {
+            if (!rc.isEmpty()) {
+                rc += " " + conjunction + " ";
             }
+            rc += this->schema->quoteColumnName(i.key()) + (i.value().isNull() ? " is null"
+                    : "=" + this->placeHolder(i.key()));
+        }
     }
     return rc;
 }
