commit ac8aede714526057c38a2687e8c7acd00c9d273a
Author: Christian Ehringfeld <c.ehringfeld@t-online.de>
Date:   Thu Jun 25 00:24:48 2015 +0200

    entitymanager inherits from qobject for acting as a worker object

diff --git a/example/main.cpp b/example/main.cpp
index 412ea5f..b05b5f5 100644
--- a/example/main.cpp
+++ b/example/main.cpp
@@ -5,6 +5,7 @@
 #include "models/artikel.h"
 #include "models/person.h"
 #include <typeinfo>
+#include <QThread>
 #include <QMetaMethod>
 #include <QMetaProperty>
 #include "models/group.h"
@@ -24,6 +25,10 @@ int main(int argc, char *argv[]) {
     CuteEntityManager::EntityManager *e = new
     CuteEntityManager::EntityManager("QSQLITE",
                                      QDir::currentPath() + "/db.sqlite");
+    QThread *entityManager = new QThread();
+    e->moveToThread(entityManager);
+
+
     QSharedPointer<Artikel> a = QSharedPointer<Artikel>(new Artikel(20.0,
                                 "Müsli"));
     auto ep = a.dynamicCast<CuteEntityManager::Entity>();
@@ -37,14 +42,15 @@ int main(int argc, char *argv[]) {
 //    e->create(pptr);
 //e->createTable(grp.dynamicCast<CuteEntityManager::Entity>());
 
-//    QTime t;
-//    t.start();
+    QTime t;
+    t.start();
 //    e->createTable(QSharedPointer<Artikel>(new Artikel()));
-//    for (int var = 0; var < 10; ++var) {
+    for (int var = 0; var < 10000; ++var) {
+        EntityInstanceFactory::createInstance<Artikel*>();
 //        QSharedPointer<Entity> a = QSharedPointer<Artikel>(new Artikel(var,QString("a")+QString::number(var)));
 //        e->save(a);
-//    }
-//    qDebug() << "Dauer:" << t.elapsed();
+    }
+    qDebug() << "Dauer:" << t.elapsed();
     //QSharedPointer<Artikel> aPtr = QSharedPointer<Artikel>(entity);
     Pupil *p = new Pupil();
 //    auto iterator = hash.constBegin();
diff --git a/src/entity.cpp b/src/entity.cpp
index d893488..8837c73 100644
--- a/src/entity.cpp
+++ b/src/entity.cpp
@@ -79,7 +79,8 @@ const QStack<const QMetaObject *> Entity::superClasses(bool
     if (this->getInheritanceStrategy() == JOINED_TABLE) {
         Entity *e = 0;
         while (superMetaObject != 0
-                && QString(superMetaObject->className()) != QString("CuteEntityManager::Entity")) {
+                && QString(superMetaObject->className()) !=
+                QString("CuteEntityManager::Entity")) {
             e = EntityInstanceFactory::createInstance(superMetaObject->className());
             if (e) {
                 classes.push(superMetaObject);
diff --git a/src/entitymanager.cpp b/src/entitymanager.cpp
index b1bb932..3e3873a 100644
--- a/src/entitymanager.cpp
+++ b/src/entitymanager.cpp
@@ -28,7 +28,7 @@ void EntityManager::init() {
     this->schema.data()->setTables(this->schema.data()->getTableSchemas());
 }
 
-EntityManager::EntityManager(QSqlDatabase database) {
+EntityManager::EntityManager(QSqlDatabase database) : QObject() {
     auto db = new Database(database);
     this->db = QSharedPointer<Database>(db);
     this->init();
@@ -67,7 +67,7 @@ bool EntityManager::executeQuery(const QString &query) {
 EntityManager::EntityManager(const QString &databaseType, QString databasename ,
                              QString hostname,
                              QString username,
-                             QString password, QString port) {
+                             QString password, QString port) : QObject() {
     auto db = new Database(databaseType, this->createConnection(), hostname,
                            databasename, username,
                            password,
diff --git a/src/entitymanager.h b/src/entitymanager.h
index e4bb01b..0d7c9b8 100644
--- a/src/entitymanager.h
+++ b/src/entitymanager.h
@@ -21,6 +21,7 @@
 #include <QtSql/QSqlField>
 #include <QString>
 #include <QStringList>
+#include <QObject>
 #include <QSharedPointer>
 #include <QDebug>
 #include "schema.h"
@@ -33,7 +34,8 @@
 
 namespace CuteEntityManager {
 
-class EntityManager {
+class EntityManager : public QObject {
+    Q_OBJECT
   signals:
     void actionFinished(qint64 id);
 
@@ -196,8 +198,7 @@ class EntityManager {
     const QString &sql) {
         Entity *e = EntityInstanceFactory::createInstance<T>();
         if (e) {
-            QSqlQuery q = this->schema.data()->getQueryBuilder().data()->getQuery();
-            q = this->db.data()->select(sql);
+            QSqlQuery q = this->db.data()->select(sql);
             auto result = this->convertQueryResult(q);
             auto ret = this->convert(result, e->getClassname());
             delete e;
