diff --git a/typo3/sysext/extbase/Classes/Persistence/Generic/Storage/Typo3DbBackend.php b/typo3/sysext/extbase/Classes/Persistence/Generic/Storage/Typo3DbBackend.php
index 431187ab00042b18ce09dfcc264aed3f10c81ec0..6ed71657f58d794ebc1fecba3684697608245527 100644
--- a/typo3/sysext/extbase/Classes/Persistence/Generic/Storage/Typo3DbBackend.php
+++ b/typo3/sysext/extbase/Classes/Persistence/Generic/Storage/Typo3DbBackend.php
@@ -523,7 +523,7 @@ class Typo3DbBackend implements BackendInterface, SingletonInterface
             );
         }
         // Handle workspace overlays
-        $pageRepository->versionOL($tableName, $row, true);
+        $pageRepository->versionOL($tableName, $row, true, $querySettings->getIgnoreEnableFields());
         if (is_array($row) && $querySettings->getLanguageOverlayMode()) {
             if ($tableName === 'pages') {
                 $row = $pageRepository->getPageOverlay($row, $querySettings->getLanguageUid());
diff --git a/typo3/sysext/extbase/Tests/Functional/Persistence/Fixtures/blogs.xml b/typo3/sysext/extbase/Tests/Functional/Persistence/Fixtures/blogs.xml
index 3a09cb188dc1ff2f5d6510197c44d50532293c54..a6274a15f12d94d480cdd1d5ced71b1ad1e69504 100644
--- a/typo3/sysext/extbase/Tests/Functional/Persistence/Fixtures/blogs.xml
+++ b/typo3/sysext/extbase/Tests/Functional/Persistence/Fixtures/blogs.xml
@@ -96,4 +96,32 @@
 		<t3ver_state>0</t3ver_state>
 		<t3ver_wsid>1</t3ver_wsid>
 	</tx_blogexample_domain_model_blog>
+	<tx_blogexample_domain_model_blog>
+		<uid>103</uid>
+		<pid>0</pid>
+		<title>WorkspaceOverlay Blog2HiddenInWorkspace</title>
+		<description>WorkspaceOverlay Blog2HiddenInWorkspace Description</description>
+		<logo></logo>
+		<l18n_diffsource></l18n_diffsource>
+		<hidden>1</hidden>
+		<deleted>0</deleted>
+		<posts>1</posts>
+		<t3ver_oid>2</t3ver_oid>
+		<t3ver_state>0</t3ver_state>
+		<t3ver_wsid>1</t3ver_wsid>
+	</tx_blogexample_domain_model_blog>
+	<tx_blogexample_domain_model_blog>
+		<uid>104</uid>
+		<pid>0</pid>
+		<title>WorkspaceOverlay Blog4HiddenInLiveAndWorkspace</title>
+		<description>WorkspaceOverlay Blog4HiddenInLiveAndWorkspace Description</description>
+		<logo></logo>
+		<l18n_diffsource></l18n_diffsource>
+		<hidden>1</hidden>
+		<deleted>0</deleted>
+		<posts>1</posts>
+		<t3ver_oid>4</t3ver_oid>
+		<t3ver_state>0</t3ver_state>
+		<t3ver_wsid>1</t3ver_wsid>
+	</tx_blogexample_domain_model_blog>
 </dataset>
diff --git a/typo3/sysext/extbase/Tests/Functional/Persistence/WorkspaceTest.php b/typo3/sysext/extbase/Tests/Functional/Persistence/WorkspaceTest.php
index 96b6a93ae3cc0c90f4e7ab08345876ee0477f8c1..db108c4585c3cbb2b7aeee39fb41b79b5cf83589 100644
--- a/typo3/sysext/extbase/Tests/Functional/Persistence/WorkspaceTest.php
+++ b/typo3/sysext/extbase/Tests/Functional/Persistence/WorkspaceTest.php
@@ -97,6 +97,56 @@ class WorkspaceTest extends FunctionalTestCase
         self::assertSame(5, $query->execute()->count());
     }
 
+    /**
+     * @test
+     * @dataProvider contextDataProvider
+     * @param string $context
+     */
+    public function fetchingHiddenBlogInWorkspace(string $context): void
+    {
+        // Set up Context for Workspace=1
+        if ($context === 'FE') {
+            $this->setupSubjectInFrontend();
+        } else {
+            $this->setupSubjectInBackend();
+        }
+
+        $query = $this->blogRepository->createQuery();
+
+        $querySettings = $query->getQuerySettings();
+        $querySettings->setStoragePageIds([0]);
+        $query->matching(
+            $query->logicalOr(
+                $query->like('title', '%Blog2%'),
+                $query->like('title', '%Blog4%'),
+                $query->like('title', '%Blog6%')
+            )
+        );
+        $query->setOrderings(['title' => QueryInterface::ORDER_ASCENDING]);
+
+        // Respect hidden flags, only show the item that was hidden in live, but is now visible in workspace
+        $querySettings->setIgnoreEnableFields(false);
+        $items = $query->execute();
+        $foundItems = [];
+        foreach ($items as $item) {
+            $foundItems[] = $item->getTitle();
+        }
+        self::assertEquals(['WorkspaceOverlay Blog6Enabled'], $foundItems);
+
+        // Allow hidden records to show up (resulting in 3 blog items)
+        $querySettings->setIgnoreEnableFields(true);
+        $items = $query->execute();
+        $foundItems = [];
+        foreach ($items as $item) {
+            $foundItems[] = $item->getTitle();
+        }
+        self::assertEquals([
+            'WorkspaceOverlay Blog2HiddenInWorkspace',
+            'WorkspaceOverlay Blog4HiddenInLiveAndWorkspace',
+            'WorkspaceOverlay Blog6Enabled',
+        ], $foundItems);
+    }
+
     /**
      * @test
      * @dataProvider contextDataProvider
@@ -119,7 +169,7 @@ class WorkspaceTest extends FunctionalTestCase
 
         $blogs = $query->execute()->toArray();
 
-        self::assertCount(4, $blogs);
+        self::assertCount(3, $blogs);
 
         // Check first blog was overlaid with workspace preview
         $firstBlog = array_shift($blogs);