diff --git a/Classes/Domain/Repository/NewsRepository.php b/Classes/Domain/Repository/NewsRepository.php
index fa88b22a3e7df4e91bd4a48de01dd40896dc3c42..a1da829a89447309610c0bca5842f9ee1400c088 100644
--- a/Classes/Domain/Repository/NewsRepository.php
+++ b/Classes/Domain/Repository/NewsRepository.php
@@ -371,21 +371,29 @@ class NewsRepository extends AbstractRepository {
 	 * @return QueryResult
 	 * @throws \InvalidArgumentException
 	 */
-	public function findNextNewsEntryFromCurrentNews(News $news, $sortBy = 'date'): QueryResult {
+	public function findNextNewsEntryFromCurrentNews(News $news, $sortBy = 'date'): QueryResultInterface {
 		$query = $this->createQuery();
 
-		$orderBy = 'ORDER BY sorting ASC, lastUpdated DESC, crdate DESC';
+		$query->getQuerySettings()->setRespectStoragePage(TRUE);
+		$query->getQuerySettings()->setStoragePageIds([$news->getPid()]);
 		if ($sortBy === 'date') {
-			$orderBy = 'ORDER BY lastUpdated DESC, crdate DESC';
-		}
-
-		$statement = 'SELECT * FROM pages WHERE uid =
-			(SELECT MIN(uid) FROM pages WHERE pid = ' . $news->getPid() . ' AND uid > ' . $news->getUid() .
-			$this->getEnableFieldsStatement('pages') . ' ' . $orderBy . ')' .
-			$this->getEnableFieldsStatement('pages');
-
-		/** @noinspection PhpUndefinedMethodInspection */
-		return $query->statement($statement)->execute();
+			$query->setOrderings([
+				'lastUpdated' => QueryInterface::ORDER_DESCENDING,
+				'crdate' => QueryInterface::ORDER_DESCENDING
+			]);
+			return $query->matching(
+				$query->lessThan('lastUpdated', $news->getLastUpdated())
+			)->execute();
+		}
+
+		$query->setOrderings([
+			'sorting' => QueryInterface::ORDER_ASCENDING,
+			'lastUpdated' => QueryInterface::ORDER_DESCENDING,
+			'crdate' => QueryInterface::ORDER_DESCENDING
+		]);
+		return $query->matching(
+			$query->lessThan('sorting', $news->getSorting())
+		)->execute();
 	}
 
 	/**
@@ -396,21 +404,29 @@ class NewsRepository extends AbstractRepository {
 	 * @return QueryResult
 	 * @throws \InvalidArgumentException
 	 */
-	public function findPreviousNewsEntryFromCurrentNews(News $news, $sortBy = 'date'): QueryResult {
+	public function findPreviousNewsEntryFromCurrentNews(News $news, $sortBy = 'date'): QueryResultInterface {
 		$query = $this->createQuery();
 
-		$orderBy = 'ORDER BY sorting ASC, lastUpdated DESC, crdate DESC';
+		$query->getQuerySettings()->setRespectStoragePage(TRUE);
+		$query->getQuerySettings()->setStoragePageIds([$news->getPid()]);
 		if ($sortBy === 'date') {
-			$orderBy = 'ORDER BY lastUpdated DESC, crdate DESC';
-		}
-
-		$statement = 'SELECT * FROM pages WHERE uid =
-			(SELECT MAX(uid) FROM pages WHERE pid = ' . $news->getPid() . ' AND uid < ' . $news->getUid() .
-			$this->getEnableFieldsStatement('pages') . ' ' . $orderBy . ')' .
-			$this->getEnableFieldsStatement('pages');
-
-		/** @noinspection PhpUndefinedMethodInspection */
-		return $query->statement($statement)->execute();
+			$query->setOrderings([
+				'lastUpdated' => QueryInterface::ORDER_ASCENDING,
+				'crdate' => QueryInterface::ORDER_ASCENDING
+			]);
+			return $query->matching(
+				$query->greaterThan('lastUpdated', $news->getLastUpdated())
+			)->execute();
+		}
+
+		$query->setOrderings([
+			'sorting' => QueryInterface::ORDER_DESCENDING,
+			'lastUpdated' => QueryInterface::ORDER_ASCENDING,
+			'crdate' => QueryInterface::ORDER_ASCENDING
+		]);
+		return $query->matching(
+			$query->greaterThan('sorting', $news->getSorting())
+		)->execute();
 	}
 
 	/**