diff --git a/pom.xml b/pom.xml
index e64190f39..4ff3ce005 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
DATAJPA
- 2.7.9
+ 3.0.2
5.6.0.Final
8.0.23
42.2.19
@@ -293,30 +293,37 @@
${hibernate.groupId}
- hibernate-core
+ hibernate-core-jakarta
${hibernate}
true
${hibernate.groupId}
- hibernate-jpamodelgen
+ hibernate-jpamodelgen-jakarta
${hibernate}
provided
+
+ jakarta.annotation
+ jakarta.annotation-api
+ ${jakarta-annotation-api}
+
+
com.querydsl
querydsl-apt
${querydsl}
- jpa
+ jakarta
provided
com.querydsl
querydsl-jpa
+ jakarta
${querydsl}
true
@@ -339,31 +346,58 @@
- javax.interceptor
- javax.interceptor-api
- 1.2.1
+ jakarta.interceptor
+ jakarta.interceptor-api
+ 2.0.0
test
- javax.enterprise
- cdi-api
+ jakarta.enterprise
+ jakarta.enterprise.cdi-api
${cdi}
provided
true
-
- javax.annotation
- javax.annotation-api
- ${javax-annotation-api}
- test
-
+
org.apache.openwebbeans
openwebbeans-se
${webbeans}
+ jakarta
+ test
+
+
+ org.apache.openwebbeans
+ openwebbeans-impl
+
+
+ org.apache.openwebbeans
+ openwebbeans-spi
+
+
+
+
+ org.apache.openwebbeans
+ openwebbeans-impl
+ ${webbeans}
+ jakarta
+ test
+
+
+ org.apache.openwebbeans
+ openwebbeans-spi
+ ${webbeans}
+ jakarta
test
diff --git a/src/main/asciidoc/jpa.adoc b/src/main/asciidoc/jpa.adoc
index f57182a3f..7fd3d8bfa 100644
--- a/src/main/asciidoc/jpa.adoc
+++ b/src/main/asciidoc/jpa.adoc
@@ -573,7 +573,7 @@ int setFixedFirstnameFor(String firstname, String lastname);
----
====
-Doing so triggers the query annotated to the method as an updating query instead of a selecting one. As the `EntityManager` might contain outdated entities after the execution of the modifying query, we do not automatically clear it (see the https://docs.oracle.com/javaee/7/api/javax/persistence/EntityManager.html[JavaDoc] of `EntityManager.clear()` for details), since this effectively drops all non-flushed changes still pending in the `EntityManager`.
+Doing so triggers the query annotated to the method as an updating query instead of a selecting one. As the `EntityManager` might contain outdated entities after the execution of the modifying query, we do not automatically clear it (see the https://jakarta.ee/specifications/persistence/2.2/apidocs/javax/persistence/entitymanager[JavaDoc] of `EntityManager.clear()` for details), since this effectively drops all non-flushed changes still pending in the `EntityManager`.
If you wish the `EntityManager` to be cleared automatically, you can set the `@Modifying` annotation's `clearAutomatically` attribute to `true`.
The `@Modifying` annotation is only relevant in combination with the `@Query` annotation.
diff --git a/src/main/java/org/springframework/data/jpa/convert/QueryByExamplePredicateBuilder.java b/src/main/java/org/springframework/data/jpa/convert/QueryByExamplePredicateBuilder.java
index be9b899d8..c896e87ee 100644
--- a/src/main/java/org/springframework/data/jpa/convert/QueryByExamplePredicateBuilder.java
+++ b/src/main/java/org/springframework/data/jpa/convert/QueryByExamplePredicateBuilder.java
@@ -21,16 +21,16 @@ import java.util.List;
import java.util.Optional;
import java.util.Set;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.Expression;
-import javax.persistence.criteria.From;
-import javax.persistence.criteria.Path;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import javax.persistence.metamodel.Attribute;
-import javax.persistence.metamodel.Attribute.PersistentAttributeType;
-import javax.persistence.metamodel.ManagedType;
-import javax.persistence.metamodel.SingularAttribute;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.Expression;
+import jakarta.persistence.criteria.From;
+import jakarta.persistence.criteria.Path;
+import jakarta.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.Root;
+import jakarta.persistence.metamodel.Attribute;
+import jakarta.persistence.metamodel.Attribute.PersistentAttributeType;
+import jakarta.persistence.metamodel.ManagedType;
+import jakarta.persistence.metamodel.SingularAttribute;
import org.springframework.dao.InvalidDataAccessApiUsageException;
import org.springframework.data.domain.Example;
diff --git a/src/main/java/org/springframework/data/jpa/convert/threeten/Jsr310JpaConverters.java b/src/main/java/org/springframework/data/jpa/convert/threeten/Jsr310JpaConverters.java
index f7cd8734e..3ab2374ea 100644
--- a/src/main/java/org/springframework/data/jpa/convert/threeten/Jsr310JpaConverters.java
+++ b/src/main/java/org/springframework/data/jpa/convert/threeten/Jsr310JpaConverters.java
@@ -22,8 +22,8 @@ import java.time.LocalTime;
import java.time.ZoneId;
import java.util.Date;
-import javax.persistence.AttributeConverter;
-import javax.persistence.Converter;
+import jakarta.persistence.AttributeConverter;
+import jakarta.persistence.Converter;
import org.springframework.data.convert.Jsr310Converters.DateToInstantConverter;
import org.springframework.data.convert.Jsr310Converters.DateToLocalDateConverter;
diff --git a/src/main/java/org/springframework/data/jpa/domain/AbstractAuditable.java b/src/main/java/org/springframework/data/jpa/domain/AbstractAuditable.java
index b40f7ff20..a4fa68917 100644
--- a/src/main/java/org/springframework/data/jpa/domain/AbstractAuditable.java
+++ b/src/main/java/org/springframework/data/jpa/domain/AbstractAuditable.java
@@ -21,10 +21,10 @@ import java.time.ZoneId;
import java.util.Date;
import java.util.Optional;
-import javax.persistence.ManyToOne;
-import javax.persistence.MappedSuperclass;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.MappedSuperclass;
+import jakarta.persistence.Temporal;
+import jakarta.persistence.TemporalType;
import org.springframework.data.domain.Auditable;
import org.springframework.lang.Nullable;
diff --git a/src/main/java/org/springframework/data/jpa/domain/AbstractPersistable.java b/src/main/java/org/springframework/data/jpa/domain/AbstractPersistable.java
index 31bd12e93..ff4f86f44 100644
--- a/src/main/java/org/springframework/data/jpa/domain/AbstractPersistable.java
+++ b/src/main/java/org/springframework/data/jpa/domain/AbstractPersistable.java
@@ -17,10 +17,10 @@ package org.springframework.data.jpa.domain;
import java.io.Serializable;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.MappedSuperclass;
-import javax.persistence.Transient;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.MappedSuperclass;
+import jakarta.persistence.Transient;
import org.springframework.data.domain.Persistable;
import org.springframework.data.util.ProxyUtils;
diff --git a/src/main/java/org/springframework/data/jpa/domain/JpaSort.java b/src/main/java/org/springframework/data/jpa/domain/JpaSort.java
index 13a10d3be..4e131e46f 100644
--- a/src/main/java/org/springframework/data/jpa/domain/JpaSort.java
+++ b/src/main/java/org/springframework/data/jpa/domain/JpaSort.java
@@ -21,8 +21,8 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import javax.persistence.metamodel.Attribute;
-import javax.persistence.metamodel.PluralAttribute;
+import jakarta.persistence.metamodel.Attribute;
+import jakarta.persistence.metamodel.PluralAttribute;
import org.springframework.data.domain.Sort;
import org.springframework.lang.Nullable;
diff --git a/src/main/java/org/springframework/data/jpa/domain/Specification.java b/src/main/java/org/springframework/data/jpa/domain/Specification.java
index e7a2aa8f9..15fcd9173 100644
--- a/src/main/java/org/springframework/data/jpa/domain/Specification.java
+++ b/src/main/java/org/springframework/data/jpa/domain/Specification.java
@@ -17,10 +17,10 @@ package org.springframework.data.jpa.domain;
import java.io.Serializable;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.Root;
import org.springframework.lang.Nullable;
diff --git a/src/main/java/org/springframework/data/jpa/domain/SpecificationComposition.java b/src/main/java/org/springframework/data/jpa/domain/SpecificationComposition.java
index e2db0ae6d..0dc3a976a 100644
--- a/src/main/java/org/springframework/data/jpa/domain/SpecificationComposition.java
+++ b/src/main/java/org/springframework/data/jpa/domain/SpecificationComposition.java
@@ -17,10 +17,10 @@ package org.springframework.data.jpa.domain;
import java.io.Serializable;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.Root;
import org.springframework.lang.Nullable;
diff --git a/src/main/java/org/springframework/data/jpa/domain/support/AuditingBeanFactoryPostProcessor.java b/src/main/java/org/springframework/data/jpa/domain/support/AuditingBeanFactoryPostProcessor.java
index 678db5b3b..d35cfc6d5 100644
--- a/src/main/java/org/springframework/data/jpa/domain/support/AuditingBeanFactoryPostProcessor.java
+++ b/src/main/java/org/springframework/data/jpa/domain/support/AuditingBeanFactoryPostProcessor.java
@@ -26,7 +26,7 @@ import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
/**
* {@link BeanFactoryPostProcessor} that ensures that the {@link AnnotationBeanConfigurerAspect} aspect is up and
- * running before the {@link javax.persistence.EntityManagerFactory} gets created as this already instantiates
+ * running before the {@link jakarta.persistence.EntityManagerFactory} gets created as this already instantiates
* entity listeners and we need to get injection into {@link org.springframework.beans.factory.annotation.Configurable}
* to work in them.
*
diff --git a/src/main/java/org/springframework/data/jpa/domain/support/AuditingEntityListener.java b/src/main/java/org/springframework/data/jpa/domain/support/AuditingEntityListener.java
index 8a57115b5..8d453ca09 100644
--- a/src/main/java/org/springframework/data/jpa/domain/support/AuditingEntityListener.java
+++ b/src/main/java/org/springframework/data/jpa/domain/support/AuditingEntityListener.java
@@ -15,8 +15,8 @@
*/
package org.springframework.data.jpa.domain.support;
-import javax.persistence.PrePersist;
-import javax.persistence.PreUpdate;
+import jakarta.persistence.PrePersist;
+import jakarta.persistence.PreUpdate;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.beans.factory.annotation.Configurable;
diff --git a/src/main/java/org/springframework/data/jpa/mapping/JpaMetamodelMappingContext.java b/src/main/java/org/springframework/data/jpa/mapping/JpaMetamodelMappingContext.java
index 7fa79ceb8..feb917699 100644
--- a/src/main/java/org/springframework/data/jpa/mapping/JpaMetamodelMappingContext.java
+++ b/src/main/java/org/springframework/data/jpa/mapping/JpaMetamodelMappingContext.java
@@ -18,8 +18,8 @@ package org.springframework.data.jpa.mapping;
import java.util.Set;
import java.util.function.Predicate;
-import javax.persistence.metamodel.ManagedType;
-import javax.persistence.metamodel.Metamodel;
+import jakarta.persistence.metamodel.ManagedType;
+import jakarta.persistence.metamodel.Metamodel;
import org.springframework.data.jpa.provider.PersistenceProvider;
import org.springframework.data.jpa.util.JpaMetamodel;
diff --git a/src/main/java/org/springframework/data/jpa/mapping/JpaPersistentEntityImpl.java b/src/main/java/org/springframework/data/jpa/mapping/JpaPersistentEntityImpl.java
index f9d2d3033..0d389d851 100644
--- a/src/main/java/org/springframework/data/jpa/mapping/JpaPersistentEntityImpl.java
+++ b/src/main/java/org/springframework/data/jpa/mapping/JpaPersistentEntityImpl.java
@@ -41,7 +41,7 @@ class JpaPersistentEntityImpl extends BasicPersistentEntity executeQueryWithResultStream(Query jpaQuery) {
@@ -148,7 +148,7 @@ public enum PersistenceProvider implements QueryExtractor, ProxyIdAccessor {
/*
* (non-Javadoc)
- * @see org.springframework.data.jpa.provider.PersistenceProvider#executeQueryWithResultStream(javax.persistence.Query)
+ * @see org.springframework.data.jpa.provider.PersistenceProvider#executeQueryWithResultStream(jakarta.persistence.Query)
*/
@Override
public CloseableIterator