diff --git a/composer.json b/composer.json
index d6dc943..8a919ce 100644
--- a/composer.json
+++ b/composer.json
@@ -38,7 +38,7 @@
     "require": {
         "php": "^8.1",
         "doctrine/orm": "^2.13",
-        "doctrine/persistence": "^2.0",
+        "doctrine/persistence": "^3.1",
         "psr/container": "^1.1 || ^2.0",
         "webonyx/graphql-php": "^14.11"
     },
diff --git a/composer.lock b/composer.lock
index 66a76b6..ec8c8c3 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "d67248d1353154d79b7498750c5f5ca9",
+    "content-hash": "40144c007b9d10039e432179e7281651",
     "packages": [
         {
             "name": "doctrine/cache",
@@ -845,44 +845,40 @@
         },
         {
             "name": "doctrine/persistence",
-            "version": "2.5.5",
+            "version": "3.1.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/persistence.git",
-                "reference": "38670dd6ac8f2d997a0b5b6c98cb380ef0ba9bd3"
+                "reference": "b44d128311af55275dbed6a4558ca59a2b9f9387"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/persistence/zipball/38670dd6ac8f2d997a0b5b6c98cb380ef0ba9bd3",
-                "reference": "38670dd6ac8f2d997a0b5b6c98cb380ef0ba9bd3",
+                "url": "https://api.github.com/repos/doctrine/persistence/zipball/b44d128311af55275dbed6a4558ca59a2b9f9387",
+                "reference": "b44d128311af55275dbed6a4558ca59a2b9f9387",
                 "shasum": ""
             },
             "require": {
-                "doctrine/cache": "^1.11 || ^2.0",
-                "doctrine/collections": "^1.0",
-                "doctrine/deprecations": "^0.5.3 || ^1",
                 "doctrine/event-manager": "^1 || ^2",
-                "php": "^7.1 || ^8.0",
+                "php": "^7.2 || ^8.0",
                 "psr/cache": "^1.0 || ^2.0 || ^3.0"
             },
             "conflict": {
-                "doctrine/annotations": "<1.0 || >=2.0",
                 "doctrine/common": "<2.10"
             },
             "require-dev": {
                 "composer/package-versions-deprecated": "^1.11",
-                "doctrine/annotations": "^1.0",
-                "doctrine/coding-standard": "^9 || ^10",
+                "doctrine/coding-standard": "^11",
                 "doctrine/common": "^3.0",
-                "phpstan/phpstan": "~1.4.10 || 1.8.8",
-                "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.5",
+                "phpstan/phpstan": "1.9.4",
+                "phpstan/phpstan-phpunit": "^1",
+                "phpstan/phpstan-strict-rules": "^1.1",
+                "phpunit/phpunit": "^8.5 || ^9.5",
                 "symfony/cache": "^4.4 || ^5.4 || ^6.0",
-                "vimeo/psalm": "4.29.0"
+                "vimeo/psalm": "4.30.0 || 5.3.0"
             },
             "type": "library",
             "autoload": {
                 "psr-4": {
-                    "Doctrine\\Common\\": "src/Common",
                     "Doctrine\\Persistence\\": "src/Persistence"
                 }
             },
@@ -917,7 +913,7 @@
                 }
             ],
             "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.",
-            "homepage": "https://doctrine-project.org/projects/persistence.html",
+            "homepage": "https://www.doctrine-project.org/projects/persistence.html",
             "keywords": [
                 "mapper",
                 "object",
@@ -927,7 +923,7 @@
             ],
             "support": {
                 "issues": "https://github.com/doctrine/persistence/issues",
-                "source": "https://github.com/doctrine/persistence/tree/2.5.5"
+                "source": "https://github.com/doctrine/persistence/tree/3.1.2"
             },
             "funding": [
                 {
@@ -943,7 +939,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-10-13T07:17:40+00:00"
+            "time": "2022-12-19T13:58:18+00:00"
         },
         {
             "name": "psr/cache",
diff --git a/src/Factory/AbstractFactory.php b/src/Factory/AbstractFactory.php
index 17ee39b..0bfbef6 100644
--- a/src/Factory/AbstractFactory.php
+++ b/src/Factory/AbstractFactory.php
@@ -6,7 +6,7 @@
 
 use Doctrine\Common\Annotations\Reader;
 use Doctrine\ORM\EntityManager;
-use Doctrine\Persistence\Mapping\Driver\AnnotationDriver;
+use Doctrine\ORM\Mapping\Driver\AnnotationDriver;
 use Doctrine\Persistence\Mapping\Driver\MappingDriverChain;
 use GraphQL\Doctrine\Annotation\Exclude;
 use GraphQL\Doctrine\Exception;
diff --git a/src/Factory/MetadataReader/MappingDriverChainAdapter.php b/src/Factory/MetadataReader/MappingDriverChainAdapter.php
index c4c4e72..fe9c18d 100644
--- a/src/Factory/MetadataReader/MappingDriverChainAdapter.php
+++ b/src/Factory/MetadataReader/MappingDriverChainAdapter.php
@@ -5,7 +5,7 @@
 namespace GraphQL\Doctrine\Factory\MetadataReader;
 
 use Doctrine\Common\Annotations\Reader;
-use Doctrine\Persistence\Mapping\Driver\AnnotationDriver;
+use Doctrine\ORM\Mapping\Driver\AnnotationDriver;
 use Doctrine\Persistence\Mapping\Driver\MappingDriverChain;
 use GraphQL\Doctrine\Exception;
 use ReflectionClass;
diff --git a/tests/TypesTest.php b/tests/TypesTest.php
index a0ac02a..7dca06b 100644
--- a/tests/TypesTest.php
+++ b/tests/TypesTest.php
@@ -150,7 +150,7 @@ public function testDoctrineWithMappingDriverChainMissingNamespace(): void
         $type = $this->types->getOutput(Post::class);
 
         $config->setMetadataDriverImpl($chain);
-        $this->expectExceptionMessage('graphql-doctrine requires GraphQLTests\Doctrine\Blog\Model\Post entity to be configured with a `Doctrine\Persistence\Mapping\Driver\AnnotationDriver`.');
+        $this->expectExceptionMessage('graphql-doctrine requires GraphQLTests\Doctrine\Blog\Model\Post entity to be configured with a `Doctrine\ORM\Mapping\Driver\AnnotationDriver`.');
         $type->getFields();
     }
 
@@ -161,7 +161,7 @@ public function testDoctrineWithoutAnnotationDriverMustThrow(): void
         $type = $this->types->getOutput(Post::class);
 
         $config->setMetadataDriverImpl(new XmlDriver([]));
-        $this->expectExceptionMessage('graphql-doctrine requires Doctrine to be configured with a `Doctrine\Persistence\Mapping\Driver\AnnotationDriver`.');
+        $this->expectExceptionMessage('graphql-doctrine requires Doctrine to be configured with a `Doctrine\ORM\Mapping\Driver\AnnotationDriver`.');
         $type->getFields();
     }