commit 8588ecff85397500937c8dd7ff5f151c64f8872c
Author: Christian Ehringfeld <c.ehringfeld@t-online.de>
Date:   Thu Oct 22 12:04:12 2015 +0200

    ticket #601

diff --git a/src/entitymanager.cpp b/src/entitymanager.cpp
index 987ab89..7910721 100644
--- a/src/entitymanager.cpp
+++ b/src/entitymanager.cpp
@@ -362,7 +362,7 @@ bool EntityManager::validate(QSharedPointer<Entity> &entity) {
 
 bool EntityManager::hasChanged(QSharedPointer<Entity> &entity) {
     bool changed = true;
-    if (entity->getId() > -1) {
+    if (entity && entity->getId() > -1) {
         changed = false;
         auto listmap = this->findByPk(entity->getId(), entity);
         auto relations = entity->getRelations();
@@ -381,9 +381,9 @@ bool EntityManager::hasChanged(QSharedPointer<Entity> &entity) {
                 QString relKey = i.key();
                 QVariant v = entity->getProperty(relKey.remove(relKey.size() - appendix.size(),
                                                  appendix.size()));
-                if (!v.isNull()) {
-                    auto entity = EntityInstanceFactory::castQVariant(v);
-                    if (entity->getProperty(entity->getPrimaryKey()) != i.value()) {
+                if (v.isValid() && !v.isNull()) {
+                    auto e = EntityInstanceFactory::castQVariant(v);
+                    if (e && e->getProperty(e->getPrimaryKey()) != i.value()) {
                         changed = true;
                         break;
                     }
