final public function createRecordset(
        string $query,
        string $overrideEntity = '',
        array $overrideKeys = [],
        array $overrideTypes = []
    ): Recordset {
        try {
            $recordset = new Recordset($this);
            $recordset->query($query, $overrideEntity, $overrideKeys, $overrideTypes);
        } catch (\Throwable $exception) {
            throw new QueryException('Unable to create a valid Recordset', $query, 0, $exception);
        }
        return $recordset;
    }