From 9c9f8fa5f7bb66ba1cb294705e11dc4f8ea315fc Mon Sep 17 00:00:00 2001
From: Joas Schilling <coding@schilljs.com>
Date: Wed, 26 Feb 2020 14:44:45 +0100
Subject: [PATCH] Allow non integer ids in Entity Mapper

Signed-off-by: Joas Schilling <coding@schilljs.com>
---
 lib/public/AppFramework/Db/QBMapper.php | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/lib/public/AppFramework/Db/QBMapper.php b/lib/public/AppFramework/Db/QBMapper.php
index a6c8ac27acb..5fa367491b0 100644
--- a/lib/public/AppFramework/Db/QBMapper.php
+++ b/lib/public/AppFramework/Db/QBMapper.php
@@ -89,9 +89,11 @@ abstract class QBMapper {
 	public function delete(Entity $entity): Entity {
 		$qb = $this->db->getQueryBuilder();
 
+		$idType = $this->getParameterTypeForProperty($entity, 'id');
+
 		$qb->delete($this->tableName)
 			->where(
-				$qb->expr()->eq('id', $qb->createNamedParameter($entity->getId()))
+				$qb->expr()->eq('id', $qb->createNamedParameter($entity->getId(), $idType))
 			);
 		$qb->execute();
 		return $entity;
@@ -126,6 +128,7 @@ abstract class QBMapper {
 		$qb->execute();
 
 		if($entity->id === null) {
+			// When autoincrement is used id is always an int
 			$entity->setId((int)$qb->getLastInsertId());
 		}
 
@@ -191,8 +194,10 @@ abstract class QBMapper {
 			$qb->set($column, $qb->createNamedParameter($value, $type));
 		}
 
+		$idType = $this->getParameterTypeForProperty($entity, 'id');
+
 		$qb->where(
-			$qb->expr()->eq('id', $qb->createNamedParameter($id, IQueryBuilder::PARAM_INT))
+			$qb->expr()->eq('id', $qb->createNamedParameter($id, $idType))
 		);
 		$qb->execute();
 
-- 
GitLab