commit 95d9cf46f08c63b9c2cd6ec17e69a39301d3e8f1
Author: Christian Ehringfeld <c.ehringfeld@t-online.de>
Date:   Sat Jan 2 20:56:51 2016 +0100

    ...

diff --git a/src/entityhelper.cpp b/src/entityhelper.cpp
index 796fe2f..7e8c1e6 100644
--- a/src/entityhelper.cpp
+++ b/src/entityhelper.cpp
@@ -174,7 +174,7 @@ Entity *EntityHelper::getBaseClassObject(const QSharedPointer<Entity> &entity,
         if(!props.contains(attributeName) ||
                 superObject->getInheritanceStrategy() == InheritanceStrategy::PER_CLASS_TABLE) {
             break;
-        } else if(!first){
+        } else if(!first) {
             delete objectBefore;
             objectBefore = nullptr;
         } else {
@@ -291,7 +291,11 @@ QHash<QString, QVariant> EntityHelper::getEntityAttributes(
     auto i = props.constBegin();
     while (i != props.constEnd()) {
         if (!transientAttrs.contains(i.key()) && !relations.contains(i.key())) {
-            map.insert(i.key(), i.value().read(entity.data()));
+            if(i.value().isEnumType()) {
+                map.insert(i.key(), i.value().read(entity.data()).toInt());
+            } else {
+                map.insert(i.key(), i.value().read(entity.data()));
+            }
         }
         ++i;
     }
diff --git a/src/entitymanager.cpp b/src/entitymanager.cpp
index 6c50335..b9db8ce 100644
--- a/src/entitymanager.cpp
+++ b/src/entitymanager.cpp
@@ -979,7 +979,7 @@ bool EntityManager::removeTable(QString className) {
     return this->executeQuery(this->schema->getQueryBuilder()->dropTable(className));
 }
 
-quint8 EntityManager::count(const QSharedPointer<Entity> &entity, bool ignoreID,
+quint32 EntityManager::count(const QSharedPointer<Entity> &entity, bool ignoreID,
                             bool followInheritance) {
     Query q = Query();
     auto qb = this->schema->getQueryBuilder();
@@ -1000,7 +1000,7 @@ quint8 EntityManager::count(const QSharedPointer<Entity> &entity, bool ignoreID,
     return this->count(q);
 }
 
-quint8 EntityManager::count(const QString &tableName) {
+quint32 EntityManager::count(const QString &tableName) {
     qint8 rc = -1;
     QSqlQuery q = this->schema->getQueryBuilder()->count(tableName);
     this->db->select(q);
@@ -1010,7 +1010,7 @@ quint8 EntityManager::count(const QString &tableName) {
     return rc;
 }
 
-qint8 EntityManager::count(Query &query) {
+quint32 EntityManager::count(Query &query) {
     qint8 rc = 0;
     query.appendSelect("COUNT(*)");
     QSqlQuery q = this->queryInterpreter->build(query);
diff --git a/src/entitymanager.h b/src/entitymanager.h
index e234c74..2a9ee54 100644
--- a/src/entitymanager.h
+++ b/src/entitymanager.h
@@ -110,9 +110,9 @@ class EntityManager : public QObject {
                      bool createRelationTables = true);
     bool createTable(QString className, bool createRelationTables = true);
     bool removeTable(QString className);
-    quint8 count(const QSharedPointer<Entity> &entity, bool ignoreID = true,
+    quint32 count(const QSharedPointer<Entity> &entity, bool ignoreID = true,
                  bool followInheritance = false);
-    quint8 count(const QString &tableName);
+    quint32 count(const QString &tableName);
     QSharedPointer<Database> getDb() const;
     void setDb(const QSharedPointer<Database> &value);
     QSharedPointer<Schema> getSchema() const;
@@ -124,7 +124,7 @@ class EntityManager : public QObject {
     void refresh(QSharedPointer<Entity> &entity);
     QList<QHash<QString, QVariant>> selectByQuery(Query &query);
     QList<QHash<QString, QVariant>> selectBySql(const QString &sql);
-    qint8 count(Query &query);
+    quint32 count(Query &query);
     /**
      * @brief EntityManager::validate
      * This validates an entity. Its uses the validationRules() method of the specified entity.
diff --git a/tests/em/tst_em.cpp b/tests/em/tst_em.cpp
index a82abae..8be62a4 100644
--- a/tests/em/tst_em.cpp
+++ b/tests/em/tst_em.cpp
@@ -41,7 +41,7 @@ void EmTest::testBasics() {
     QVERIFY(article2);
     entity = article2.objectCast<Entity>();
     QVERIFY(this->e->remove(entity));
-    QCOMPARE(this->e->count("article"), (quint8)0);
+    QCOMPARE(this->e->count("article"), (quint32)0);
 }
 
 void EmTest::init() {
diff --git a/tests/em/tst_querybuilder.cpp b/tests/em/tst_querybuilder.cpp
index 0028594..2da98c4 100644
--- a/tests/em/tst_querybuilder.cpp
+++ b/tests/em/tst_querybuilder.cpp
@@ -107,6 +107,25 @@ void QuerybuilderTest::testFindByAttributesManyToOneResolve() {
     QCOMPARE(g->getLeader()->getFamilyName(), QString("Sey."));
 }
 
+void QuerybuilderTest::testFindByAttributesSuperClassAttribute() {
+    auto qb = e->getQueryBuilder();
+    Query q = Query();
+    q.appendWhere(q.equal(qb, "nickName", QString("Lotta")));
+    QList<QSharedPointer<Employee>> list = e->find<Employee>(q, true);
+    QCOMPARE(list.size(), 1);
+    QCOMPARE(list.at(0)->getPersNumber(), (unsigned long long)42);
+}
+
+void QuerybuilderTest::testQueryBuilderCount() {
+    QVariant var;
+    var.setValue(Person::Gender::FEMALE);
+    auto qb = e->getQueryBuilder();
+    Query q = Query();
+    q.appendWhere(q.equal(qb, "gender", var.toInt()));
+    q.appendFrom("person");
+    QCOMPARE(this->e->count(q), (quint32)4);
+}
+
 
 void QuerybuilderTest::testFindByAttributesManyToOneRelation() {
     QHash<QString, QVariant> attributes;
diff --git a/tests/em/tst_querybuilder.h b/tests/em/tst_querybuilder.h
index 4665d97..94089f9 100644
--- a/tests/em/tst_querybuilder.h
+++ b/tests/em/tst_querybuilder.h
@@ -22,6 +22,8 @@ class QuerybuilderTest : public QObject {
     void testFindByAttributesOneToManyResolve();
     void testFindByAttributesOneToOneResolve();
     void testFindByAttributesManyToOneResolve();
+    void testFindByAttributesSuperClassAttribute();
+    void testQueryBuilderCount();
     void testQueryBuilder();
     void testQueryBuilderEntityInheritance();
     void testQueryBuilderEntityInheritanceWithoutJoin();
