This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch maintenance-branch in repository https://gitbox.apache.org/repos/asf/causeway.git
commit 4120c3d13943a875bee26001aae828be75c349de Author: andi-huber <[email protected]> AuthorDate: Tue Jan 13 18:42:15 2026 +0100 CAUSEWAY-3951: fixes unresolvable type cast (backport from main) --- .../jpa/integration/entity/JpaEntityFacet.java | 24 ++++++++++++---------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/persistence/jpa/integration/src/main/java/org/apache/causeway/persistence/jpa/integration/entity/JpaEntityFacet.java b/persistence/jpa/integration/src/main/java/org/apache/causeway/persistence/jpa/integration/entity/JpaEntityFacet.java index 51494bb75d1..18bae3a1e65 100644 --- a/persistence/jpa/integration/src/main/java/org/apache/causeway/persistence/jpa/integration/entity/JpaEntityFacet.java +++ b/persistence/jpa/integration/src/main/java/org/apache/causeway/persistence/jpa/integration/entity/JpaEntityFacet.java @@ -24,6 +24,7 @@ import javax.inject.Inject; import javax.persistence.EntityManager; import javax.persistence.PersistenceUnitUtil; +import javax.persistence.TypedQuery; import org.springframework.data.jpa.repository.JpaContext; import org.springframework.lang.Nullable; @@ -131,17 +132,8 @@ public Can<ManagedObject> fetchByQuery(final Query<?> query) { // guard against misuse _Assert.assertTypeIsInstanceOf(queryEntityType, entityClass); - - val entityManager = getEntityManager(); - - val cb = entityManager.getCriteriaBuilder(); - val cr = cb.createQuery(entityClass); - - cr.select(_Casts.uncheckedCast(cr.from(entityClass))); - - val typedQuery = entityManager - .createQuery(cr); - + + val typedQuery = selectFrom(entityClass); if (range.hasOffset()) { typedQuery.setFirstResult(range.getStartAsInt()); } @@ -281,5 +273,15 @@ protected EntityManager getEntityManager() { protected PersistenceUnitUtil getPersistenceUnitUtil(final EntityManager entityManager) { return entityManager.getEntityManagerFactory().getPersistenceUnitUtil(); } + + // -- HELPER + + private <T> TypedQuery<T> selectFrom(Class<T> entityClass) { + var entityManager = getEntityManager(); + var q = entityManager.getCriteriaBuilder().createQuery(entityClass); + q.select(q.from(entityClass)); + return entityManager + .createQuery(q); + } }
