diff --git a/src/Entity.jl b/src/Entity.jl
index 064b5dcfa0afdfdcaa4a9a7fddc08a8be8c7b700..6dce4d344e05d7cd86ce38d8f99992ba338326cc 100644
--- a/src/Entity.jl
+++ b/src/Entity.jl
@@ -806,11 +806,29 @@ function get_value(entity::Ref{_Entity})
                 end
             end
         end
-        if @isdefined err_code
-            CaosDB.Exceptions.evaluate_return_code(err_code)
+    elseif ent_datatype[2]
+        # is reference
+        if !is_list
+            out = Ref{Ptr{UInt8}}(Ptr{UInt8}())
+            err_code = ccall(
+                (:caosdb_entity_entity_get_string_value, CaosDB.library_name),
+                Cint,
+                (Ref{_Entity}, Ref{Ptr{UInt8}}),
+                entity,
+                out,
+            )
+            out = unsafe_string(out[])
+        else
+            # is list of references
+            list_length = get_property_list_length(entity)
+            out = [get_string_list_value_at(entity, Cint(ii)) for ii = 1:list_length]
         end
     end
 
+    if @isdefined err_code
+        CaosDB.Exceptions.evaluate_return_code(err_code)
+    end
+
     return out
 end
 
@@ -897,10 +915,27 @@ function get_value(property::Ref{_Property})
                 end
             end
         end
-        if @isdefined err_code
-            CaosDB.Exceptions.evaluate_return_code(err_code)
+    elseif prop_datatype[2]
+        # is reference
+        if !is_list
+            out = Ref{Ptr{UInt8}}(Ptr{UInt8}())
+            err_code = ccall(
+                (:caosdb_entity_property_get_string_value, CaosDB.library_name),
+                Cint,
+                (Ref{_Property}, Ref{Ptr{UInt8}}),
+                property,
+                out,
+            )
+            out = unsafe_string(out[])
+        else
+            # is list of references
+            list_length = get_property_list_length(property)
+            out = [get_string_list_value_at(property, Cint(ii)) for ii = 1:list_length]
         end
     end
+    if @isdefined err_code
+        CaosDB.Exceptions.evaluate_return_code(err_code)
+    end
 
     return out
 end