commit a205e8a92aef59aec93bb2ee99321e399dfe1e8d
Author: Christian Ehringfeld <c.ehringfeld@t-online.de>
Date:   Tue May 5 21:54:26 2015 +0200

    ...

diff --git a/example/main.cpp b/example/main.cpp
index beaba17..d245dbc 100644
--- a/example/main.cpp
+++ b/example/main.cpp
@@ -25,7 +25,7 @@ int main(int argc, char *argv[]) {
     qDebug() << "Tabelle artikel erstellt:" << e->createTable(ep);
     e->create(ep);
 
-    QSharedPointer<Person> p = QSharedPointer<Person>(new Person("Max", "Mustermann", Person::MALE, "", "", "",
+    QSharedPointer<CuteEntityManager::Entity> p = QSharedPointer<CuteEntityManager::Entity>(new Person("Max", "Mustermann", Person::MALE, "", "", "",
                                QDate::currentDate()));
     auto pptr = p.dynamicCast<CuteEntityManager::Entity>();
     e->createTable(pptr);
diff --git a/src/entity.cpp b/src/entity.cpp
index aeb05c8..ae27d66 100644
--- a/src/entity.cpp
+++ b/src/entity.cpp
@@ -70,5 +70,8 @@ qint64 Entity::getId() const {
 }
 
 void Entity::setId(const qint64 &value) {
-    id = value;
+    if(value != this->id) {
+        id = value;
+        emit idChanged();
+    }
 }
diff --git a/src/entityinstancefactory.h b/src/entityinstancefactory.h
index 14205b4..8b4e176 100644
--- a/src/entityinstancefactory.h
+++ b/src/entityinstancefactory.h
@@ -12,8 +12,14 @@ class EntityInstanceFactory {
     static Entity *createInstance(const QString &className);
     static Entity *createInstance(int metaTypeId);
     static Entity *createInstance(const char *className, const QHash<QString, QVariant> &attributes);
-    static Entity *setAttributes(Entity *e, const QHash<QString, QVariant> &attributes, QHash<QString, QMetaProperty> metaprops);
+    static Entity *setAttributes(Entity *e, const QHash<QString, QVariant> &attributes,
+                                 QHash<QString, QMetaProperty> metaprops);
     static Entity *setAttributes(Entity *e, const QHash<QString, QVariant> &attributes);
+
+    template<typename T>
+    static Entity *createInstance() {
+        return EntityInstanceFactory::createInstance(qMetaTypeId<T>());
+    }
   protected:
     EntityInstanceFactory();
 };
diff --git a/src/entitymanager.cpp b/src/entitymanager.cpp
index 984dbef..b603fb8 100644
--- a/src/entitymanager.cpp
+++ b/src/entitymanager.cpp
@@ -16,7 +16,6 @@
 
 #include "entitymanager.h"
 #include "enums/databasetype.h"
-#include "entityinstancefactory.h"
 #include "databasemigration.h"
 using namespace CuteEntityManager;
 
diff --git a/src/entitymanager.h b/src/entitymanager.h
index 7e40245..5e971fa 100644
--- a/src/entitymanager.h
+++ b/src/entitymanager.h
@@ -25,8 +25,10 @@
 #include <QDebug>
 #include "schema.h"
 #include <QtSql/QSqlError>
+#include <QMetaType>
 #include "entity.h"
 #include "database.h"
+#include "entityinstancefactory.h"
 
 namespace CuteEntityManager {
 
@@ -73,7 +75,12 @@ class EntityManager {
     QList<QSharedPointer<Entity>> findAllEntities(QSharedPointer<Entity> entity);
     QSharedPointer<Entity> findEntity(QSharedPointer<Entity> entity);
     QList<QSharedPointer<Entity>> findEntityByAttributes(const QSharedPointer<Entity> &entity, bool ignoreID = false);
-
+    template<class T> QSharedPointer<Entity> findById(const qint64 &id) {
+        Entity *e = EntityInstanceFactory::createInstance<T>();
+        QSharedPointer<Entity> ptr = QSharedPointer<Entity>(e);
+        e->setId(id);
+        return this->findEntity(ptr);
+    }
 
     bool create(QSharedPointer<Entity> &entity);
     bool save(QSharedPointer<Entity> &entity);
