diff --git a/fastapi_users_db_sqlmodel/__init__.py b/fastapi_users_db_sqlmodel/__init__.py
index 695c5e2..be5fe90 100644
--- a/fastapi_users_db_sqlmodel/__init__.py
+++ b/fastapi_users_db_sqlmodel/__init__.py
@@ -4,13 +4,14 @@
 
 from fastapi_users.db.base import BaseUserDatabase
 from fastapi_users.models import ID, OAP, UP
-from pydantic import UUID4, EmailStr
+from pydantic import UUID4, EmailStr, ConfigDict
+from pydantic.version import VERSION as PYDANTIC_VERSION
 from sqlalchemy.ext.asyncio import AsyncSession
 from sqlalchemy.orm import selectinload
-from sqlmodel import Field, Session, SQLModel, func, select
+from sqlmodel import Field, Session, SQLModel, func, select, AutoString
 
 __version__ = "0.3.0"
-
+PYDANTIC_V2 = PYDANTIC_VERSION.startswith("2.")
 
 class SQLModelBaseUserDB(SQLModel):
     __tablename__ = "user"
@@ -20,7 +21,8 @@ class SQLModelBaseUserDB(SQLModel):
         email: str
     else:
         email: EmailStr = Field(
-            sa_column_kwargs={"unique": True, "index": True}, nullable=False
+            sa_column_kwargs={"unique": True, "index": True}, nullable=False,
+            sa_type=AutoString
         )
     hashed_password: str
 
@@ -28,8 +30,12 @@ class SQLModelBaseUserDB(SQLModel):
     is_superuser: bool = Field(False, nullable=False)
     is_verified: bool = Field(False, nullable=False)
 
-    class Config:
-        orm_mode = True
+    if PYDANTIC_V2:  # pragma: no cover
+        model_config = ConfigDict(from_attributes=True)  # type: ignore
+    else:  # pragma: no cover
+
+        class Config:
+            orm_mode = True
 
 
 class SQLModelBaseOAuthAccount(SQLModel):
@@ -44,8 +50,12 @@ class SQLModelBaseOAuthAccount(SQLModel):
     account_id: str = Field(index=True, nullable=False)
     account_email: str = Field(nullable=False)
 
-    class Config:
-        orm_mode = True
+    if PYDANTIC_V2:
+        model_config = ConfigDict(from_attributes=True)  # type: ignore
+    else:
+
+        class Config:
+            orm_mode = True
 
 
 class SQLModelUserDatabase(Generic[UP, ID], BaseUserDatabase[UP, ID]):
diff --git a/fastapi_users_db_sqlmodel/access_token.py b/fastapi_users_db_sqlmodel/access_token.py
index 8a4519e..cda3e65 100644
--- a/fastapi_users_db_sqlmodel/access_token.py
+++ b/fastapi_users_db_sqlmodel/access_token.py
@@ -2,14 +2,15 @@
 from typing import Any, Dict, Generic, Optional, Type
 
 from fastapi_users.authentication.strategy.db import AP, AccessTokenDatabase
-from pydantic import UUID4
+from pydantic import UUID4, ConfigDict
+from pydantic.version import VERSION as PYDANTIC_VERSION
 from sqlalchemy import Column, types
 from sqlalchemy.ext.asyncio import AsyncSession
 from sqlmodel import Field, Session, SQLModel, select
 
 from fastapi_users_db_sqlmodel.generics import TIMESTAMPAware, now_utc
 
-
+PYDANTIC_V2 = PYDANTIC_VERSION.startswith("2.")
 class SQLModelBaseAccessToken(SQLModel):
     __tablename__ = "accesstoken"
 
@@ -24,8 +25,11 @@ class SQLModelBaseAccessToken(SQLModel):
     )
     user_id: UUID4 = Field(foreign_key="user.id", nullable=False)
 
-    class Config:
-        orm_mode = True
+    if PYDANTIC_V2:  # pragma: no cover
+        model_config = ConfigDict(from_attributes=True)  # type: ignore
+    else:  # pragma: no cover
+        class Config:
+            orm_mode = True
 
 
 class SQLModelAccessTokenDatabase(Generic[AP], AccessTokenDatabase[AP]):