diff --git a/test/test_transaction.cpp b/test/test_transaction.cpp
index 75a96eada22d77074ec4a0bbb62e1d5ba69c967e..1caf49ac66b7c02d5a6ba827672dc3d49f382545 100644
--- a/test/test_transaction.cpp
+++ b/test/test_transaction.cpp
@@ -29,6 +29,7 @@
 #include "gtest/gtest_pred_impl.h"     // for Test, EXPECT_EQ, AssertionResult
 #include <memory>                      // for unique_ptr, allocator, __shar...
 #include <string>                      // for string
+#include <vector>                      // for vector
 
 namespace caosdb::transaction {
 using caosdb::entity::Entity;
@@ -135,4 +136,24 @@ TEST(test_transaction, insert_delete) {
   EXPECT_FALSE(deleted_entity.HasErrors());
 }
 
+TEST(test_transaction, test_multi_retrieve) {
+  const auto &connection =
+    caosdb::connection::ConnectionManager::GetDefaultConnection();
+
+  auto transaction(connection->CreateTransaction());
+
+  const std::vector<std::string> ids = {"20", "21", "22"};
+  transaction->RetrieveById(ids.begin(), ids.end());
+  transaction->ExecuteAsynchronously();
+
+  auto status = transaction->WaitForIt();
+
+  ASSERT_TRUE(status.IsTerminated());
+  ASSERT_FALSE(status.IsError());
+
+  const auto &result_set = transaction->GetResultSet();
+
+  EXPECT_EQ(result_set.Size(), 3);
+}
+
 } // namespace caosdb::transaction