protected function findDataByItemIds(string $recipeProperty, array $itemIds, array $modCombinationIds): array
    {
        $result = [];
        if (count($itemIds) > 0) {
            $columns = [
                'r.id AS id',
                'r.name AS name',
                'r.mode AS mode',
                'IDENTITY(r2.item) AS itemId',
                'mc.order AS order'
            ];

            $queryBuilder = $this->entityManager->createQueryBuilder();
            $queryBuilder->select($columns)
                         ->from(Recipe::class, 'r')
                         ->innerJoin('r.' . $recipeProperty, 'r2')
                         ->innerJoin('r.modCombinations', 'mc')
                         ->andWhere('r2.item IN (:itemIds)')
                         ->setParameter('itemIds', array_values($itemIds))
                         ->addOrderBy('r.name', 'ASC')
                         ->addOrderBy('r.mode', 'ASC');

            if (count($modCombinationIds) > 0) {
                $queryBuilder->andWhere('mc.id IN (:modCombinationIds)')
                             ->setParameter('modCombinationIds', array_values($modCombinationIds));
            }

            $result = $this->mapRecipeDataResult($queryBuilder->getQuery()->getResult());
        }
        return $result;
    }