diff --git a/src/caosdb/common/models.py b/src/caosdb/common/models.py
index ecd74551957bbc2b5323abae81b12f7762a0718b..343b0bbbeea8605361422120a4ff2aae445a59e8 100644
--- a/src/caosdb/common/models.py
+++ b/src/caosdb/common/models.py
@@ -519,9 +519,12 @@ class Entity(object):
                     return p
         elif isinstance(key, Entity):
             if key.id is not None:
-                return self.get_parent(int(key.id))
-            else:
-                return self.get_parent(key.name)
+                # first try by id
+                found = self.get_parent(int(key.id))
+                if found is not None:
+                    return found
+            # otherwise by name
+            return self.get_parent(key.name)
         else:
             for p in self.parents:
                 if (p.name is not None
diff --git a/unittests/test_record.py b/unittests/test_record.py
index d0acb235981cb2bd767af6ad3aebb713a9b9313c..850e9c6921c13ff2271e48c32f329d3de96f9021 100644
--- a/unittests/test_record.py
+++ b/unittests/test_record.py
@@ -24,7 +24,7 @@
 #
 """Tests for the Record class."""
 # pylint: disable=missing-docstring
-from caosdb import Entity, Record
+from caosdb import Entity, Record, RecordType
 
 
 def test_is_entity():
@@ -59,3 +59,17 @@ def test_get_parent_by_id():
     rec.add_parent(234)
     assert rec.get_parent(None) is None
     assert rec.get_parent(234) is not None
+
+def test_get_parent_by_entity():
+    rec = Record(id="123")
+    rt = RecordType("Test", id=234)
+    rec.add_parent(rt)
+    assert rec.get_parent(rt) is not None
+
+    rec = Record()
+    rec.add_parent(234)
+    assert rec.get_parent(rt) is not None
+
+    rec = Record()
+    rec.add_parent("Test")
+    assert rec.get_parent(rt) is not None