Error 500 Internal Server Error

GET https://coffee.traductera.com/

Forwarded to ErrorController (ba78fb)

Exceptions

[Semantical Error] line 0, col -1 near 'SELECT cons AS': Error: Cannot select entity through identification variables without choosing at least one root entity alias.

Exceptions 2

Doctrine\ORM\Query\ QueryException

  1. return new self('[Syntax Error] ' . $message, 0, $previous);
  2. }
  3. public static function semanticalError(string $message, Throwable|null $previous = null): self
  4. {
  5. return new self('[Semantical Error] ' . $message, 0, $previous);
  6. }
  7. public static function invalidLockMode(): self
  8. {
  9. return new self('Invalid lock mode hint provided.');
in vendor/doctrine/orm/src/Query/Parser.php :: semanticalError (line 465)
  1. $tokenStr = substr($dql, $token->position, $length);
  2. // Building informative message
  3. $message = 'line 0, col ' . $tokenPos . " near '" . $tokenStr . "': Error: " . $message;
  4. throw QueryException::semanticalError($message, QueryException::dqlError($this->query->getDQL()));
  5. }
  6. /**
  7. * Peeks beyond the matched closing parenthesis and returns the first token after that one.
  8. *
in vendor/doctrine/orm/src/Query/Parser.php -> semanticalError (line 800)
  1. if (isset($this->queryComponents[$dqlAlias]) && ! isset($this->queryComponents[$dqlAlias]['parent'])) {
  2. return;
  3. }
  4. }
  5. $this->semanticalError('Cannot select entity through identification variables without choosing at least one root entity alias.');
  6. }
  7. /**
  8. * QueryLanguage ::= SelectStatement | UpdateStatement | DeleteStatement
  9. */
in vendor/doctrine/orm/src/Query/Parser.php -> processRootEntityAliasSelected (line 260)
  1. if ($this->deferredNewObjectExpressions) {
  2. $this->processDeferredNewObjectExpressions($AST);
  3. }
  4. $this->processRootEntityAliasSelected();
  5. // TODO: Is there a way to remove this? It may impact the mixed hydration resultset a lot!
  6. $this->fixIdentificationVariableOrder($AST);
  7. return $AST;
  1. /**
  2. * Parses a query string.
  3. */
  4. public function parse(): ParserResult
  5. {
  6. $AST = $this->getAST();
  7. $customWalkers = $this->query->getHint(Query::HINT_CUSTOM_TREE_WALKERS);
  8. if ($customWalkers !== false) {
  9. $this->customTreeWalkers = $customWalkers;
  10. }
  1. }
  2. // Cache miss.
  3. $parser = new Parser($this);
  4. $this->parserResult = $parser->parse();
  5. $queryCache->save($cacheItem->set($this->parserResult)->expiresAfter($this->queryCacheTTL));
  6. return $this->parserResult;
  7. }
  1. $this->state = self::STATE_DIRTY;
  2. }
  3. private function getSqlExecutor(): AbstractSqlExecutor
  4. {
  5. return $this->parse()->prepareSqlExecutor($this);
  6. }
  7. }
in vendor/doctrine/orm/src/Query.php -> getSqlExecutor (line 257)
  1. return $this->parserResult;
  2. }
  3. protected function _doExecute(): Result|int
  4. {
  5. $executor = $this->getSqlExecutor();
  6. if ($this->queryCacheProfile) {
  7. $executor->setQueryCacheProfile($this->queryCacheProfile);
  8. } else {
  9. $executor->removeQueryCacheProfile();
  1. $setCacheEntry = static function ($data) use ($cache, $result, $cacheItem, $realCacheKey): void {
  2. $cache->save($cacheItem->set($result + [$realCacheKey => $data]));
  3. };
  4. }
  5. $stmt = $this->_doExecute();
  6. if (is_numeric($stmt)) {
  7. $setCacheEntry($stmt);
  8. return $stmt;
in vendor/doctrine/orm/src/AbstractQuery.php -> executeIgnoreQueryCache (line 886)
  1. ): mixed {
  2. if ($this->cacheable && $this->isCacheEnabled()) {
  3. return $this->executeUsingQueryCache($parameters, $hydrationMode);
  4. }
  5. return $this->executeIgnoreQueryCache($parameters, $hydrationMode);
  6. }
  7. /**
  8. * Execute query ignoring second level cache.
  9. *
  1. *
  2. * @phpstan-param string|AbstractQuery::HYDRATE_* $hydrationMode
  3. */
  4. public function getResult(string|int $hydrationMode = self::HYDRATE_OBJECT): mixed
  5. {
  6. return $this->execute(null, $hydrationMode);
  7. }
  8. /**
  9. * Gets the array of results for the query.
  10. *
AbstractQuery->getResult() in src/Repository/CoffeeRepository.php (line 191)
  1. /**
  2. * @return list<array{person: Person, balance: float}>
  3. */
  4. public function findPersonsWithNegativeBalance(): array
  5. {
  6. $rows = $this->getEntityManager()->createQueryBuilder()
  7. ->select('p AS person')
  8. ->addSelect('COALESCE(SUM(c.amount), 0) AS balance')
  9. ->from(Person::class, 'p')
  10. ->leftJoin(Coffee::class, 'c', 'WITH', 'c.consumer = p')
CoffeeRepository->findPersonsWithNegativeBalance() in src/Controller/HomeController.php (line 68)
  1. if ($user->isAdminUser()) {
  2. return $this->render('home/index.html.twig', [
  3. 'is_superadmin_home' => true,
  4. 'admin_stats' => $this->loadAdminDashboardStats(),
  5. 'admin_negative_balances' => $this->coffeeRepository->findPersonsWithNegativeBalance(),
  6. 'admin_unconfirmed_coffees' => $this->coffeeRepository->findUnconfirmedRecent(15),
  7. 'admin_cashbox_balance' => $this->moneyRepository->sumAmount(),
  8. 'admin_recent_money' => $this->moneyRepository->findRecent(5),
  9. ]);
  10. }
  1. $this->dispatcher->dispatch($event, KernelEvents::CONTROLLER_ARGUMENTS);
  2. $controller = $event->getController();
  3. $arguments = $event->getArguments();
  4. // call controller
  5. $response = $controller(...$arguments);
  6. // view
  7. if (!$response instanceof Response) {
  8. $event = new ViewEvent($this, $request, $type, $response, $event);
  9. $this->dispatcher->dispatch($event, KernelEvents::VIEW);
  1. $request->headers->set('X-Php-Ob-Level', (string) ob_get_level());
  2. $this->requestStack->push($request);
  3. $response = null;
  4. try {
  5. return $response = $this->handleRaw($request, $type);
  6. } catch (\Throwable $e) {
  7. if ($e instanceof \Error && !$this->handleAllThrowables) {
  8. throw $e;
  9. }
  1. if (!$this->handlingHttpCache) {
  2. $this->resetServices = true;
  3. }
  4. try {
  5. return $this->getHttpKernel()->handle($request, $type, $catch);
  6. } finally {
  7. --$this->requestStackSize;
  8. }
  9. }
  1. ) {
  2. }
  3. public function run(): int
  4. {
  5. $response = $this->kernel->handle($this->request);
  6. if (Kernel::VERSION_ID >= 60400) {
  7. $response->send(false);
  8. if (\function_exists('fastcgi_finish_request') && !$this->debug) {
in vendor/autoload_runtime.php -> run (line 32)
  1. $app = $app(...$args);
  2. exit(
  3. $runtime
  4. ->getRunner($app)
  5. ->run()
  6. );
require_once('/var/www/coffee/vendor/autoload_runtime.php') in public/index.php (line 5)
  1. <?php
  2. use App\Kernel;
  3. require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
  4. return static function (array $context) {
  5. return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
  6. };

Doctrine\ORM\Query\ QueryException

SELECT cons AS person, COALESCE(SUM(c.amount), 0) AS balance FROM App\Entity\Coffee c LEFT JOIN c.consumer cons WHERE c.consumer IS NOT NULL GROUP BY cons.id HAVING COALESCE(SUM(c.amount), 0) < 0 ORDER BY balance ASC, cons.name ASC, cons.id ASC

  1. class QueryException extends Exception implements ORMException
  2. {
  3. public static function dqlError(string $dql): self
  4. {
  5. return new self($dql);
  6. }
  7. public static function syntaxError(string $message, Throwable|null $previous = null): self
  8. {
  9. return new self('[Syntax Error] ' . $message, 0, $previous);
  1. $tokenStr = substr($dql, $token->position, $length);
  2. // Building informative message
  3. $message = 'line 0, col ' . $tokenPos . " near '" . $tokenStr . "': Error: " . $message;
  4. throw QueryException::semanticalError($message, QueryException::dqlError($this->query->getDQL()));
  5. }
  6. /**
  7. * Peeks beyond the matched closing parenthesis and returns the first token after that one.
  8. *
in vendor/doctrine/orm/src/Query/Parser.php -> semanticalError (line 800)
  1. if (isset($this->queryComponents[$dqlAlias]) && ! isset($this->queryComponents[$dqlAlias]['parent'])) {
  2. return;
  3. }
  4. }
  5. $this->semanticalError('Cannot select entity through identification variables without choosing at least one root entity alias.');
  6. }
  7. /**
  8. * QueryLanguage ::= SelectStatement | UpdateStatement | DeleteStatement
  9. */
in vendor/doctrine/orm/src/Query/Parser.php -> processRootEntityAliasSelected (line 260)
  1. if ($this->deferredNewObjectExpressions) {
  2. $this->processDeferredNewObjectExpressions($AST);
  3. }
  4. $this->processRootEntityAliasSelected();
  5. // TODO: Is there a way to remove this? It may impact the mixed hydration resultset a lot!
  6. $this->fixIdentificationVariableOrder($AST);
  7. return $AST;
  1. /**
  2. * Parses a query string.
  3. */
  4. public function parse(): ParserResult
  5. {
  6. $AST = $this->getAST();
  7. $customWalkers = $this->query->getHint(Query::HINT_CUSTOM_TREE_WALKERS);
  8. if ($customWalkers !== false) {
  9. $this->customTreeWalkers = $customWalkers;
  10. }
  1. }
  2. // Cache miss.
  3. $parser = new Parser($this);
  4. $this->parserResult = $parser->parse();
  5. $queryCache->save($cacheItem->set($this->parserResult)->expiresAfter($this->queryCacheTTL));
  6. return $this->parserResult;
  7. }
  1. $this->state = self::STATE_DIRTY;
  2. }
  3. private function getSqlExecutor(): AbstractSqlExecutor
  4. {
  5. return $this->parse()->prepareSqlExecutor($this);
  6. }
  7. }
in vendor/doctrine/orm/src/Query.php -> getSqlExecutor (line 257)
  1. return $this->parserResult;
  2. }
  3. protected function _doExecute(): Result|int
  4. {
  5. $executor = $this->getSqlExecutor();
  6. if ($this->queryCacheProfile) {
  7. $executor->setQueryCacheProfile($this->queryCacheProfile);
  8. } else {
  9. $executor->removeQueryCacheProfile();
  1. $setCacheEntry = static function ($data) use ($cache, $result, $cacheItem, $realCacheKey): void {
  2. $cache->save($cacheItem->set($result + [$realCacheKey => $data]));
  3. };
  4. }
  5. $stmt = $this->_doExecute();
  6. if (is_numeric($stmt)) {
  7. $setCacheEntry($stmt);
  8. return $stmt;
in vendor/doctrine/orm/src/AbstractQuery.php -> executeIgnoreQueryCache (line 886)
  1. ): mixed {
  2. if ($this->cacheable && $this->isCacheEnabled()) {
  3. return $this->executeUsingQueryCache($parameters, $hydrationMode);
  4. }
  5. return $this->executeIgnoreQueryCache($parameters, $hydrationMode);
  6. }
  7. /**
  8. * Execute query ignoring second level cache.
  9. *
  1. *
  2. * @phpstan-param string|AbstractQuery::HYDRATE_* $hydrationMode
  3. */
  4. public function getResult(string|int $hydrationMode = self::HYDRATE_OBJECT): mixed
  5. {
  6. return $this->execute(null, $hydrationMode);
  7. }
  8. /**
  9. * Gets the array of results for the query.
  10. *
AbstractQuery->getResult() in src/Repository/CoffeeRepository.php (line 191)
  1. /**
  2. * @return list<array{person: Person, balance: float}>
  3. */
  4. public function findPersonsWithNegativeBalance(): array
  5. {
  6. $rows = $this->getEntityManager()->createQueryBuilder()
  7. ->select('p AS person')
  8. ->addSelect('COALESCE(SUM(c.amount), 0) AS balance')
  9. ->from(Person::class, 'p')
  10. ->leftJoin(Coffee::class, 'c', 'WITH', 'c.consumer = p')
CoffeeRepository->findPersonsWithNegativeBalance() in src/Controller/HomeController.php (line 68)
  1. if ($user->isAdminUser()) {
  2. return $this->render('home/index.html.twig', [
  3. 'is_superadmin_home' => true,
  4. 'admin_stats' => $this->loadAdminDashboardStats(),
  5. 'admin_negative_balances' => $this->coffeeRepository->findPersonsWithNegativeBalance(),
  6. 'admin_unconfirmed_coffees' => $this->coffeeRepository->findUnconfirmedRecent(15),
  7. 'admin_cashbox_balance' => $this->moneyRepository->sumAmount(),
  8. 'admin_recent_money' => $this->moneyRepository->findRecent(5),
  9. ]);
  10. }
  1. $this->dispatcher->dispatch($event, KernelEvents::CONTROLLER_ARGUMENTS);
  2. $controller = $event->getController();
  3. $arguments = $event->getArguments();
  4. // call controller
  5. $response = $controller(...$arguments);
  6. // view
  7. if (!$response instanceof Response) {
  8. $event = new ViewEvent($this, $request, $type, $response, $event);
  9. $this->dispatcher->dispatch($event, KernelEvents::VIEW);
  1. $request->headers->set('X-Php-Ob-Level', (string) ob_get_level());
  2. $this->requestStack->push($request);
  3. $response = null;
  4. try {
  5. return $response = $this->handleRaw($request, $type);
  6. } catch (\Throwable $e) {
  7. if ($e instanceof \Error && !$this->handleAllThrowables) {
  8. throw $e;
  9. }
  1. if (!$this->handlingHttpCache) {
  2. $this->resetServices = true;
  3. }
  4. try {
  5. return $this->getHttpKernel()->handle($request, $type, $catch);
  6. } finally {
  7. --$this->requestStackSize;
  8. }
  9. }
  1. ) {
  2. }
  3. public function run(): int
  4. {
  5. $response = $this->kernel->handle($this->request);
  6. if (Kernel::VERSION_ID >= 60400) {
  7. $response->send(false);
  8. if (\function_exists('fastcgi_finish_request') && !$this->debug) {
in vendor/autoload_runtime.php -> run (line 32)
  1. $app = $app(...$args);
  2. exit(
  3. $runtime
  4. ->getRunner($app)
  5. ->run()
  6. );
require_once('/var/www/coffee/vendor/autoload_runtime.php') in public/index.php (line 5)
  1. <?php
  2. use App\Kernel;
  3. require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
  4. return static function (array $context) {
  5. return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
  6. };

Logs

Level Message
info 20:43:33 Matched route "_profiler".
{
    "route": "_profiler",
    "route_parameters": {
        "_route": "_profiler",
        "_controller": "web_profiler.controller.profiler::panelAction",
        "token": "dc6df6"
    },
    "request_uri": "https://coffee.traductera.com/_profiler/dc6df6?panel=exception&type=request",
    "method": "GET"
}
debug 20:43:33 Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\DebugHandlersListener::configure"
}
debug 20:43:33 Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ValidateRequestListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\ValidateRequestListener::onKernelRequest"
}
debug 20:43:33 Notified event "kernel.request" to listener "Symfony\Bridge\Doctrine\Middleware\IdleConnection\Listener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Bridge\\Doctrine\\Middleware\\IdleConnection\\Listener::onKernelRequest"
}
debug 20:43:33 Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\SessionListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\SessionListener::onKernelRequest"
}
debug 20:43:33 Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::setDefaultLocale".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener::setDefaultLocale"
}
debug 20:43:33 Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\RouterListener::onKernelRequest"
}
debug 20:43:33 Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener::onKernelRequest"
}
debug 20:43:33 Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleAwareListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleAwareListener::onKernelRequest"
}
debug 20:43:33 Notified event "kernel.request" to listener "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::configureLogoutUrlGenerator".
{
    "event": "kernel.request",
    "listener": "Symfony\\Bundle\\SecurityBundle\\Debug\\TraceableFirewallListener::configureLogoutUrlGenerator"
}
debug 20:43:33 Notified event "kernel.request" to listener "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Bundle\\SecurityBundle\\Debug\\TraceableFirewallListener::onKernelRequest"
}
debug 20:43:33 Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController".
{
    "event": "kernel.controller",
    "listener": "Symfony\\Bundle\\FrameworkBundle\\DataCollector\\RouterDataCollector::onKernelController"
}
debug 20:43:33 Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController".
{
    "event": "kernel.controller",
    "listener": "Symfony\\Component\\HttpKernel\\DataCollector\\RequestDataCollector::onKernelController"
}
info 20:43:33 User Deprecated: Support for MySQL < 8 is deprecated and will be removed in DBAL 5 (AbstractMySQLDriver.php:75 called by AbstractDriverMiddleware.php:32, https://github.com/doctrine/dbal/pull/6343, package doctrine/dbal)
{
    "exception": {}
}
debug 20:43:33 Notified event "kernel.controller_arguments" to listener "Symfony\Component\HttpKernel\EventListener\IsSignatureValidAttributeListener::onKernelControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\IsSignatureValidAttributeListener::onKernelControllerArguments"
}
debug 20:43:33 Notified event "kernel.controller_arguments" to listener "Symfony\Component\Security\Http\EventListener\IsCsrfTokenValidAttributeListener::onKernelControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\Security\\Http\\EventListener\\IsCsrfTokenValidAttributeListener::onKernelControllerArguments"
}
debug 20:43:33 Notified event "kernel.controller_arguments" to listener "Symfony\Component\Security\Http\EventListener\IsGrantedAttributeListener::onKernelControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\Security\\Http\\EventListener\\IsGrantedAttributeListener::onKernelControllerArguments"
}
debug 20:43:33 Notified event "kernel.controller_arguments" to listener "Symfony\Component\HttpKernel\EventListener\CacheAttributeListener::onKernelControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\CacheAttributeListener::onKernelControllerArguments"
}
debug 20:43:33 Notified event "kernel.controller_arguments" to listener "Symfony\Component\HttpKernel\EventListener\ErrorListener::onControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\ErrorListener::onControllerArguments"
}

Stack Traces 2

[2/2] QueryException
Doctrine\ORM\Query\QueryException:
[Semantical Error] line 0, col -1 near 'SELECT cons AS': Error: Cannot select entity through identification variables without choosing at least one root entity alias.

  at vendor/doctrine/orm/src/Query/QueryException.php:28
  at Doctrine\ORM\Query\QueryException::semanticalError()
     (vendor/doctrine/orm/src/Query/Parser.php:465)
  at Doctrine\ORM\Query\Parser->semanticalError()
     (vendor/doctrine/orm/src/Query/Parser.php:800)
  at Doctrine\ORM\Query\Parser->processRootEntityAliasSelected()
     (vendor/doctrine/orm/src/Query/Parser.php:260)
  at Doctrine\ORM\Query\Parser->getAST()
     (vendor/doctrine/orm/src/Query/Parser.php:330)
  at Doctrine\ORM\Query\Parser->parse()
     (vendor/doctrine/orm/src/Query.php:248)
  at Doctrine\ORM\Query->parse()
     (vendor/doctrine/orm/src/Query.php:717)
  at Doctrine\ORM\Query->getSqlExecutor()
     (vendor/doctrine/orm/src/Query.php:257)
  at Doctrine\ORM\Query->_doExecute()
     (vendor/doctrine/orm/src/AbstractQuery.php:930)
  at Doctrine\ORM\AbstractQuery->executeIgnoreQueryCache()
     (vendor/doctrine/orm/src/AbstractQuery.php:886)
  at Doctrine\ORM\AbstractQuery->execute()
     (vendor/doctrine/orm/src/AbstractQuery.php:688)
  at Doctrine\ORM\AbstractQuery->getResult()
     (src/Repository/CoffeeRepository.php:191)
  at App\Repository\CoffeeRepository->findPersonsWithNegativeBalance()
     (src/Controller/HomeController.php:68)
  at App\Controller\HomeController->index()
     (vendor/symfony/http-kernel/HttpKernel.php:183)
  at Symfony\Component\HttpKernel\HttpKernel->handleRaw()
     (vendor/symfony/http-kernel/HttpKernel.php:76)
  at Symfony\Component\HttpKernel\HttpKernel->handle()
     (vendor/symfony/http-kernel/Kernel.php:193)
  at Symfony\Component\HttpKernel\Kernel->handle()
     (vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php:35)
  at Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run()
     (vendor/autoload_runtime.php:32)
  at require_once('/var/www/coffee/vendor/autoload_runtime.php')
     (public/index.php:5)                
[1/2] QueryException
Doctrine\ORM\Query\QueryException:
SELECT cons AS person, COALESCE(SUM(c.amount), 0) AS balance FROM App\Entity\Coffee c LEFT JOIN c.consumer cons WHERE c.consumer IS NOT NULL GROUP BY cons.id HAVING COALESCE(SUM(c.amount), 0) < 0 ORDER BY balance ASC, cons.name ASC, cons.id ASC

  at vendor/doctrine/orm/src/Query/QueryException.php:18
  at Doctrine\ORM\Query\QueryException::dqlError()
     (vendor/doctrine/orm/src/Query/Parser.php:465)
  at Doctrine\ORM\Query\Parser->semanticalError()
     (vendor/doctrine/orm/src/Query/Parser.php:800)
  at Doctrine\ORM\Query\Parser->processRootEntityAliasSelected()
     (vendor/doctrine/orm/src/Query/Parser.php:260)
  at Doctrine\ORM\Query\Parser->getAST()
     (vendor/doctrine/orm/src/Query/Parser.php:330)
  at Doctrine\ORM\Query\Parser->parse()
     (vendor/doctrine/orm/src/Query.php:248)
  at Doctrine\ORM\Query->parse()
     (vendor/doctrine/orm/src/Query.php:717)
  at Doctrine\ORM\Query->getSqlExecutor()
     (vendor/doctrine/orm/src/Query.php:257)
  at Doctrine\ORM\Query->_doExecute()
     (vendor/doctrine/orm/src/AbstractQuery.php:930)
  at Doctrine\ORM\AbstractQuery->executeIgnoreQueryCache()
     (vendor/doctrine/orm/src/AbstractQuery.php:886)
  at Doctrine\ORM\AbstractQuery->execute()
     (vendor/doctrine/orm/src/AbstractQuery.php:688)
  at Doctrine\ORM\AbstractQuery->getResult()
     (src/Repository/CoffeeRepository.php:191)
  at App\Repository\CoffeeRepository->findPersonsWithNegativeBalance()
     (src/Controller/HomeController.php:68)
  at App\Controller\HomeController->index()
     (vendor/symfony/http-kernel/HttpKernel.php:183)
  at Symfony\Component\HttpKernel\HttpKernel->handleRaw()
     (vendor/symfony/http-kernel/HttpKernel.php:76)
  at Symfony\Component\HttpKernel\HttpKernel->handle()
     (vendor/symfony/http-kernel/Kernel.php:193)
  at Symfony\Component\HttpKernel\Kernel->handle()
     (vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php:35)
  at Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run()
     (vendor/autoload_runtime.php:32)
  at require_once('/var/www/coffee/vendor/autoload_runtime.php')
     (public/index.php:5)