You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2022/11/22 10:46:03 UTC

[camel-quarkus] 01/02: Revert "Springless JPA extension (#4049)" (#4286)

This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch 2.13.x
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 82e59a2a596e15f36faa0651caf44c694255e917
Author: Zheng Feng <zh...@gmail.com>
AuthorDate: Tue Nov 22 15:22:49 2022 +0800

    Revert "Springless JPA extension (#4049)" (#4286)
    
    This reverts commit e399bac884dcbf554b1a42ed613efc5a2585be73.
---
 .../ROOT/pages/reference/extensions/jpa.adoc       | 28 +----------
 extensions/jpa/deployment/pom.xml                  |  4 ++
 .../component/jpa/deployment/JpaProcessor.java     |  4 --
 extensions/jpa/runtime/pom.xml                     |  9 ++--
 .../jpa/runtime/src/main/doc/configuration.adoc    | 27 +----------
 .../quarkus/component/jpa/CamelJpaProducer.java    | 32 -------------
 .../quarkus/component/jpa/CamelJpaRecorder.java    | 10 +++-
 .../component/jpa/QuarkusTransactionStrategy.java  | 31 ------------
 .../DefaultTransactionStrategySubstitution.java    | 27 -----------
 .../jpa/graal/JpaEndpointSubstitution.java         | 55 ----------------------
 .../orm/jpa/SharedEntityManagerCreator.java        | 27 -----------
 .../transaction/PlatformTransactionManager.java    | 20 --------
 .../transaction/support/TransactionTemplate.java   | 25 ----------
 .../camel/quarkus/component/jpa/it/JpaRoute.java   |  9 ++--
 poms/bom/pom.xml                                   | 10 +++-
 poms/bom/src/main/generated/flattened-full-pom.xml | 10 +++-
 .../src/main/generated/flattened-reduced-pom.xml   | 15 +++++-
 .../generated/flattened-reduced-verbose-pom.xml    | 15 +++++-
 18 files changed, 70 insertions(+), 288 deletions(-)

diff --git a/docs/modules/ROOT/pages/reference/extensions/jpa.adoc b/docs/modules/ROOT/pages/reference/extensions/jpa.adoc
index f5af553fd8..c5aadd3de9 100644
--- a/docs/modules/ROOT/pages/reference/extensions/jpa.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/jpa.adoc
@@ -50,32 +50,8 @@ endif::[]
 
 The extension leverages https://quarkus.io/guides/hibernate-orm[Quarkus Hibernate ORM] to provide the JPA implementation via Hibernate.
 
-Refer to the https://quarkus.io/guides/hibernate-orm[Quarkus Hibernate ORM] documentation to see how to configure Hibernate and your datasource.
-
-Also, it leverages https://quarkus.io/guides/transaction#programmatic-approach[Quarkus TX API] to provide `TransactionStrategy` implementation.
+Refer to the https://quarkus.io/guides/hibernate-orm[Quarkus Hibernate ORM] documentation to see how to configure Hibernate and your datasource,
 
 When a single persistence unit is used, the Camel Quarkus JPA extension will automatically configure the JPA component with a
-`EntityManagerFactory` and `TransactionStrategy`.
-
-[id="extensions-jpa-configuration-configuring-jpamessageidrepository"]
-=== Configuring JpaMessageIdRepository
-It needs to use `EntityManagerFactory` and `TransactionStrategy` from the CDI container to configure the `JpaMessageIdRepository`:
-[source, java]
-----
-@Inject
-EntityManagerFactory entityManagerFactory;
-
-@Inject
-TransactionStrategy transactionStrategy;
-
-from("direct:idempotent")
-    .idempotentConsumer(
-        header("messageId"),
-        new JpaMessageIdRepository(entityManagerFactory, transactionStrategy, "idempotentProcessor"));
-----
-
-[NOTE]
-====
-Since it excludes the `spring-orm` dependency, some options such as `sharedEntityManager`, `transactionManager`  are not supported.
-====
+`EntityManagerFactory` and `TransactionManager`.
 
diff --git a/extensions/jpa/deployment/pom.xml b/extensions/jpa/deployment/pom.xml
index ad21702fb0..89066eee6f 100644
--- a/extensions/jpa/deployment/pom.xml
+++ b/extensions/jpa/deployment/pom.xml
@@ -38,6 +38,10 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-core-deployment</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-spring-deployment</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-jpa</artifactId>
diff --git a/extensions/jpa/deployment/src/main/java/org/apache/camel/quarkus/component/jpa/deployment/JpaProcessor.java b/extensions/jpa/deployment/src/main/java/org/apache/camel/quarkus/component/jpa/deployment/JpaProcessor.java
index adfc8405b8..d2dc9bfd36 100644
--- a/extensions/jpa/deployment/src/main/java/org/apache/camel/quarkus/component/jpa/deployment/JpaProcessor.java
+++ b/extensions/jpa/deployment/src/main/java/org/apache/camel/quarkus/component/jpa/deployment/JpaProcessor.java
@@ -16,14 +16,12 @@
  */
 package org.apache.camel.quarkus.component.jpa.deployment;
 
-import io.quarkus.arc.deployment.AdditionalBeanBuildItem;
 import io.quarkus.deployment.annotations.BuildProducer;
 import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.annotations.ExecutionTime;
 import io.quarkus.deployment.annotations.Record;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
 import org.apache.camel.component.jpa.JpaComponent;
-import org.apache.camel.quarkus.component.jpa.CamelJpaProducer;
 import org.apache.camel.quarkus.component.jpa.CamelJpaRecorder;
 import org.apache.camel.quarkus.core.deployment.spi.CamelRuntimeBeanBuildItem;
 
@@ -39,10 +37,8 @@ class JpaProcessor {
     @Record(ExecutionTime.RUNTIME_INIT)
     @BuildStep
     void configureJpaComponentBean(
-            BuildProducer<AdditionalBeanBuildItem> additionalBeans,
             BuildProducer<CamelRuntimeBeanBuildItem> camelRuntimeBean,
             CamelJpaRecorder recorder) {
-        additionalBeans.produce(new AdditionalBeanBuildItem(CamelJpaProducer.class));
 
         camelRuntimeBean.produce(
                 new CamelRuntimeBeanBuildItem(
diff --git a/extensions/jpa/runtime/pom.xml b/extensions/jpa/runtime/pom.xml
index 071b73d3ec..1f4e238b5e 100644
--- a/extensions/jpa/runtime/pom.xml
+++ b/extensions/jpa/runtime/pom.xml
@@ -36,11 +36,6 @@
     </properties>
 
     <dependencies>
-	<dependency>
-            <groupId>org.graalvm.nativeimage</groupId>
-            <artifactId>svm</artifactId>
-            <scope>provided</scope>
-        </dependency>
         <dependency>
             <groupId>io.quarkus</groupId>
             <artifactId>quarkus-hibernate-orm</artifactId>
@@ -49,6 +44,10 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-core</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-spring</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-jpa</artifactId>
diff --git a/extensions/jpa/runtime/src/main/doc/configuration.adoc b/extensions/jpa/runtime/src/main/doc/configuration.adoc
index 0be017ccf1..ebb4d86353 100644
--- a/extensions/jpa/runtime/src/main/doc/configuration.adoc
+++ b/extensions/jpa/runtime/src/main/doc/configuration.adoc
@@ -1,29 +1,6 @@
 The extension leverages https://quarkus.io/guides/hibernate-orm[Quarkus Hibernate ORM] to provide the JPA implementation via Hibernate.
 
-Refer to the https://quarkus.io/guides/hibernate-orm[Quarkus Hibernate ORM] documentation to see how to configure Hibernate and your datasource.
-
-Also, it leverages https://quarkus.io/guides/transaction#programmatic-approach[Quarkus TX API] to provide `TransactionStrategy` implementation.
+Refer to the https://quarkus.io/guides/hibernate-orm[Quarkus Hibernate ORM] documentation to see how to configure Hibernate and your datasource,
 
 When a single persistence unit is used, the Camel Quarkus JPA extension will automatically configure the JPA component with a
-`EntityManagerFactory` and `TransactionStrategy`.
-
-=== Configuring JpaMessageIdRepository
-It needs to use `EntityManagerFactory` and `TransactionStrategy` from the CDI container to configure the `JpaMessageIdRepository`:
-[source, java]
-----
-@Inject
-EntityManagerFactory entityManagerFactory;
-
-@Inject
-TransactionStrategy transactionStrategy;
-
-from("direct:idempotent")
-    .idempotentConsumer(
-        header("messageId"),
-        new JpaMessageIdRepository(entityManagerFactory, transactionStrategy, "idempotentProcessor"));
-----
-
-[NOTE]
-====
-Since it excludes the `spring-orm` dependency, some options such as `sharedEntityManager`, `transactionManager`  are not supported.
-====
+`EntityManagerFactory` and `TransactionManager`.
diff --git a/extensions/jpa/runtime/src/main/java/org/apache/camel/quarkus/component/jpa/CamelJpaProducer.java b/extensions/jpa/runtime/src/main/java/org/apache/camel/quarkus/component/jpa/CamelJpaProducer.java
deleted file mode 100644
index 500a62e46f..0000000000
--- a/extensions/jpa/runtime/src/main/java/org/apache/camel/quarkus/component/jpa/CamelJpaProducer.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.quarkus.component.jpa;
-
-import javax.enterprise.context.ApplicationScoped;
-import javax.enterprise.context.Dependent;
-import javax.enterprise.inject.Produces;
-
-import org.apache.camel.component.jpa.TransactionStrategy;
-
-@Dependent
-public class CamelJpaProducer {
-    @Produces
-    @ApplicationScoped
-    public TransactionStrategy quarkusTransactionStrategy() {
-        return new QuarkusTransactionStrategy();
-    }
-}
diff --git a/extensions/jpa/runtime/src/main/java/org/apache/camel/quarkus/component/jpa/CamelJpaRecorder.java b/extensions/jpa/runtime/src/main/java/org/apache/camel/quarkus/component/jpa/CamelJpaRecorder.java
index 658d5424ee..38fc108477 100644
--- a/extensions/jpa/runtime/src/main/java/org/apache/camel/quarkus/component/jpa/CamelJpaRecorder.java
+++ b/extensions/jpa/runtime/src/main/java/org/apache/camel/quarkus/component/jpa/CamelJpaRecorder.java
@@ -16,16 +16,24 @@
  */
 package org.apache.camel.quarkus.component.jpa;
 
+import javax.transaction.TransactionManager;
+import javax.transaction.UserTransaction;
+
+import io.quarkus.arc.Arc;
 import io.quarkus.runtime.RuntimeValue;
 import io.quarkus.runtime.annotations.Recorder;
 import org.apache.camel.component.jpa.JpaComponent;
+import org.springframework.transaction.jta.JtaTransactionManager;
 
 @Recorder
 public class CamelJpaRecorder {
 
     public RuntimeValue<JpaComponent> createJpaComponent() {
+        TransactionManager transactionManager = Arc.container().instance(TransactionManager.class).get();
+        UserTransaction userTransaction = Arc.container().instance(UserTransaction.class).get();
+
         JpaComponent component = new JpaComponent();
-        component.setTransactionStrategy(new QuarkusTransactionStrategy());
+        component.setTransactionManager(new JtaTransactionManager(userTransaction, transactionManager));
         return new RuntimeValue<>(component);
     }
 }
diff --git a/extensions/jpa/runtime/src/main/java/org/apache/camel/quarkus/component/jpa/QuarkusTransactionStrategy.java b/extensions/jpa/runtime/src/main/java/org/apache/camel/quarkus/component/jpa/QuarkusTransactionStrategy.java
deleted file mode 100644
index 755968491a..0000000000
--- a/extensions/jpa/runtime/src/main/java/org/apache/camel/quarkus/component/jpa/QuarkusTransactionStrategy.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.camel.quarkus.component.jpa;
-
-import io.quarkus.narayana.jta.QuarkusTransaction;
-import io.quarkus.narayana.jta.RunOptions;
-import org.apache.camel.component.jpa.TransactionStrategy;
-
-import static io.quarkus.narayana.jta.QuarkusTransaction.runOptions;
-
-public class QuarkusTransactionStrategy implements TransactionStrategy {
-    @Override
-    public void executeInTransaction(Runnable runnable) {
-        QuarkusTransaction.run(runOptions().semantic(RunOptions.Semantic.JOIN_EXISTING), runnable);
-    }
-}
diff --git a/extensions/jpa/runtime/src/main/java/org/apache/camel/quarkus/component/jpa/graal/DefaultTransactionStrategySubstitution.java b/extensions/jpa/runtime/src/main/java/org/apache/camel/quarkus/component/jpa/graal/DefaultTransactionStrategySubstitution.java
deleted file mode 100644
index 9fe71229fd..0000000000
--- a/extensions/jpa/runtime/src/main/java/org/apache/camel/quarkus/component/jpa/graal/DefaultTransactionStrategySubstitution.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.camel.quarkus.component.jpa.graal;
-
-import com.oracle.svm.core.annotate.Delete;
-import com.oracle.svm.core.annotate.TargetClass;
-import org.apache.camel.component.jpa.DefaultTransactionStrategy;
-
-@TargetClass(DefaultTransactionStrategy.class)
-@Delete
-final public class DefaultTransactionStrategySubstitution {
-}
diff --git a/extensions/jpa/runtime/src/main/java/org/apache/camel/quarkus/component/jpa/graal/JpaEndpointSubstitution.java b/extensions/jpa/runtime/src/main/java/org/apache/camel/quarkus/component/jpa/graal/JpaEndpointSubstitution.java
deleted file mode 100644
index ca742ac181..0000000000
--- a/extensions/jpa/runtime/src/main/java/org/apache/camel/quarkus/component/jpa/graal/JpaEndpointSubstitution.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.camel.quarkus.component.jpa.graal;
-
-import javax.persistence.EntityManagerFactory;
-
-import com.oracle.svm.core.annotate.Alias;
-import com.oracle.svm.core.annotate.Substitute;
-import com.oracle.svm.core.annotate.TargetClass;
-import org.apache.camel.component.jpa.JpaEndpoint;
-import org.apache.camel.component.jpa.TransactionStrategy;
-import org.springframework.transaction.PlatformTransactionManager;
-import org.springframework.transaction.support.TransactionTemplate;
-
-@TargetClass(JpaEndpoint.class)
-final public class JpaEndpointSubstitution {
-    @Alias
-    private TransactionStrategy transactionStrategy;
-
-    @Substitute
-    protected EntityManagerFactory createEntityManagerFactory() {
-        throw new UnsupportedOperationException("createEntityManagerFactory is not supported");
-    }
-
-    @Substitute
-    protected TransactionTemplate createTransactionTemplate() {
-        throw new UnsupportedOperationException("createTransactionTemplate is not supported");
-    }
-
-    @Substitute
-    public PlatformTransactionManager getTransactionManager() {
-        throw new UnsupportedOperationException("getTransactionManager is not supported");
-    }
-
-    @Substitute
-    public TransactionStrategy getTransactionStrategy() {
-        return transactionStrategy;
-    }
-
-}
diff --git a/extensions/jpa/runtime/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java b/extensions/jpa/runtime/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java
deleted file mode 100644
index 93d009f3c8..0000000000
--- a/extensions/jpa/runtime/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.orm.jpa;
-
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-
-public abstract class SharedEntityManagerCreator {
-    public static EntityManager createSharedEntityManager(EntityManagerFactory emf) {
-        throw new UnsupportedOperationException("createSharedEntityManager is not supported");
-    }
-}
diff --git a/extensions/jpa/runtime/src/main/java/org/springframework/transaction/PlatformTransactionManager.java b/extensions/jpa/runtime/src/main/java/org/springframework/transaction/PlatformTransactionManager.java
deleted file mode 100644
index 33cce533e8..0000000000
--- a/extensions/jpa/runtime/src/main/java/org/springframework/transaction/PlatformTransactionManager.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.springframework.transaction;
-
-public interface PlatformTransactionManager {
-}
diff --git a/extensions/jpa/runtime/src/main/java/org/springframework/transaction/support/TransactionTemplate.java b/extensions/jpa/runtime/src/main/java/org/springframework/transaction/support/TransactionTemplate.java
deleted file mode 100644
index ee1e84dd14..0000000000
--- a/extensions/jpa/runtime/src/main/java/org/springframework/transaction/support/TransactionTemplate.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.springframework.transaction.support;
-
-import org.springframework.transaction.PlatformTransactionManager;
-
-public class TransactionTemplate {
-    public PlatformTransactionManager getTransactionManager() {
-        throw new UnsupportedOperationException("getTransactionManager is not supported");
-    }
-}
diff --git a/integration-tests/jpa/src/main/java/org/apache/camel/quarkus/component/jpa/it/JpaRoute.java b/integration-tests/jpa/src/main/java/org/apache/camel/quarkus/component/jpa/it/JpaRoute.java
index 53767cbf43..b0b0ed3fd9 100644
--- a/integration-tests/jpa/src/main/java/org/apache/camel/quarkus/component/jpa/it/JpaRoute.java
+++ b/integration-tests/jpa/src/main/java/org/apache/camel/quarkus/component/jpa/it/JpaRoute.java
@@ -23,19 +23,16 @@ import javax.inject.Inject;
 import javax.persistence.EntityManagerFactory;
 
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.jpa.TransactionStrategy;
-import org.apache.camel.processor.idempotent.jpa.JpaMessageIdRepository;
 import org.apache.camel.quarkus.component.jpa.it.model.Fruit;
 
+import static org.apache.camel.processor.idempotent.jpa.JpaMessageIdRepository.jpaMessageIdRepository;
+
 @ApplicationScoped
 public class JpaRoute extends RouteBuilder {
 
     @Inject
     EntityManagerFactory entityManagerFactory;
 
-    @Inject
-    TransactionStrategy transactionStrategy;
-
     @Override
     public void configure() throws Exception {
         String jpaEndpoint = "jpa:" + Fruit.class.getName();
@@ -76,7 +73,7 @@ public class JpaRoute extends RouteBuilder {
         from("direct:idempotent")
                 .idempotentConsumer(
                         header("messageId"),
-                        new JpaMessageIdRepository(entityManagerFactory, transactionStrategy, "idempotentProcessor"))
+                        jpaMessageIdRepository(entityManagerFactory, "idempotentProcessor"))
                 .log("Consumes messageId: ${header.messageId}")
                 .to("mock:idempotent");
 
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index c7f5af69ba..ca3fdb04a9 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -3577,7 +3577,15 @@
                     </exclusion>
                     <exclusion>
                         <groupId>org.springframework</groupId>
-                        <artifactId>spring-orm</artifactId>
+                        <artifactId>spring-beans</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>org.springframework</groupId>
+                        <artifactId>spring-context</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>org.springframework</groupId>
+                        <artifactId>spring-core</artifactId>
                     </exclusion>
                 </exclusions>
             </dependency>
diff --git a/poms/bom/src/main/generated/flattened-full-pom.xml b/poms/bom/src/main/generated/flattened-full-pom.xml
index d3b02097d6..de24897ade 100644
--- a/poms/bom/src/main/generated/flattened-full-pom.xml
+++ b/poms/bom/src/main/generated/flattened-full-pom.xml
@@ -3516,7 +3516,15 @@
           </exclusion>
           <exclusion>
             <groupId>org.springframework</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
-            <artifactId>spring-orm</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+            <artifactId>spring-beans</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+          </exclusion>
+          <exclusion>
+            <groupId>org.springframework</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+            <artifactId>spring-context</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+          </exclusion>
+          <exclusion>
+            <groupId>org.springframework</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+            <artifactId>spring-core</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
           </exclusion>
         </exclusions>
       </dependency>
diff --git a/poms/bom/src/main/generated/flattened-reduced-pom.xml b/poms/bom/src/main/generated/flattened-reduced-pom.xml
index f673233dde..1c784f68e4 100644
--- a/poms/bom/src/main/generated/flattened-reduced-pom.xml
+++ b/poms/bom/src/main/generated/flattened-reduced-pom.xml
@@ -3516,7 +3516,15 @@
           </exclusion>
           <exclusion>
             <groupId>org.springframework</groupId>
-            <artifactId>spring-orm</artifactId>
+            <artifactId>spring-beans</artifactId>
+          </exclusion>
+          <exclusion>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
+          </exclusion>
+          <exclusion>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-core</artifactId>
           </exclusion>
         </exclusions>
       </dependency>
@@ -10382,6 +10390,11 @@
         <artifactId>spring-messaging</artifactId>
         <version>5.3.23</version>
       </dependency>
+      <dependency>
+        <groupId>org.springframework</groupId>
+        <artifactId>spring-orm</artifactId>
+        <version>5.3.23</version>
+      </dependency>
       <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-tx</artifactId>
diff --git a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
index bb7ff13116..48ae8966e5 100644
--- a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
+++ b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
@@ -3516,7 +3516,15 @@
           </exclusion>
           <exclusion>
             <groupId>org.springframework</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
-            <artifactId>spring-orm</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+            <artifactId>spring-beans</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+          </exclusion>
+          <exclusion>
+            <groupId>org.springframework</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+            <artifactId>spring-context</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+          </exclusion>
+          <exclusion>
+            <groupId>org.springframework</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+            <artifactId>spring-core</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
           </exclusion>
         </exclusions>
       </dependency>
@@ -10382,6 +10390,11 @@
         <artifactId>spring-messaging</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
         <version>5.3.23</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
       </dependency>
+      <dependency>
+        <groupId>org.springframework</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+        <artifactId>spring-orm</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+        <version>5.3.23</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+      </dependency>
       <dependency>
         <groupId>org.springframework</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
         <artifactId>spring-tx</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->