code: @Override
      public Stream<? extends Ticket> getTicketsStream() {
          return this.ticketCatalog.findAll()
              .stream()
              .map(t -> {
                  val sql = String.format("select t from %s t", getTicketEntityName(t));
                  val query = (org.hibernate.query.Query<Ticket>) entityManager.createQuery(sql, t.getImplementationClass());
                  query.setFetchSize(STREAM_BATCH_SIZE);
                  query.setLockOptions(LockOptions.NONE);
                  return query;
              })
              .flatMap(org.hibernate.query.Query::stream);
      }
docs: Gets a stream which loads tickets from the database in batches instead of all at once to prevent OOM situations.
  <p>
  This method purposefully doesn't lock any rows, because the stream traversing can take an indeterminate
  amount of time, and logging in to an application with an existing TGT will update the TGT row in the database.
  
  @return tickets