diff --git a/src/caosdb/common/models.py b/src/caosdb/common/models.py
index ca13c23e80bb7e147d8adf1b80790bbc328e6634..37f622104dffc2cfb523c9fa9f1eba76f06f4cff 100644
--- a/src/caosdb/common/models.py
+++ b/src/caosdb/common/models.py
@@ -552,24 +552,33 @@ class Entity(object):
             The first Property of this Entity with a matching name or id.
 
         """
-        result = None
-        if hasattr(pattern, "name"):
-            result = self.get_property(pattern.name)
-        if result is None and hasattr(pattern, "id"):
-            result = self.get_property(pattern.id)
-        if result is not None:
-            return result
-
-        if isinstance(pattern, int):
+        # entity given
+
+        if (hasattr(pattern, "name") or hasattr(pattern, "id")):
+            # only return if a result was found, otherwise use id
+
+            if (hasattr(pattern, "name") and pattern.name is not None
+                    and self.get_property(pattern.name) is not None):
+
+                return self.get_property(pattern.name)
+
+            if hasattr(pattern, "id")and pattern.id is not None:
+                return self.get_property(pattern.id)
+
+        # int given
+        elif isinstance(pattern, int):
             for p in self.properties:
                 if p.id is not None and int(p.id) == int(pattern):
                     return p
-        else:
+        # str given
+        elif isinstance(pattern, str):
             for p in self.properties:
                 if (p.name is not None
                         and str(p.name).lower() == str(pattern).lower()):
 
                     return p
+        else:
+            raise ValueError("argument should be entity, int , string")
 
         return None