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

borinquenkid pushed a commit to branch 8.0.x-hibernate7
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit ed4ac2f26825f97f8a424962513c1a5c24684652
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Fri Feb 20 14:02:31 2026 -0600

    Resolve unchecked assignments and ClassCastException by improving type 
safety
---
 .../org/grails/orm/hibernate/query/AliasMapEntryFunction.java  |  6 +++---
 .../orm/hibernate/query/DetachedAssociationFunction.java       | 10 +++++-----
 .../groovy/org/grails/orm/hibernate/query/JpaFromProvider.java |  9 +++++----
 .../org/grails/orm/hibernate/query/PredicateGenerator.java     |  4 ++--
 4 files changed, 15 insertions(+), 14 deletions(-)

diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/AliasMapEntryFunction.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/AliasMapEntryFunction.java
index 458f916c86..f23a5f5af1 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/AliasMapEntryFunction.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/AliasMapEntryFunction.java
@@ -7,10 +7,10 @@ import java.util.function.Function;
 
 public class AliasMapEntryFunction
         implements
-        Function<DetachedAssociationCriteria,
-                Map.Entry<String, DetachedAssociationCriteria>> {
+        Function<DetachedAssociationCriteria<?>,
+                Map.Entry<String, DetachedAssociationCriteria<?>>> {
     @Override
-    public Map.Entry<String, DetachedAssociationCriteria> 
apply(DetachedAssociationCriteria detachedAssociationCriteria) {
+    public Map.Entry<String, DetachedAssociationCriteria<?>> 
apply(DetachedAssociationCriteria<?> detachedAssociationCriteria) {
         return Map.entry(detachedAssociationCriteria.getAssociationPath(), 
detachedAssociationCriteria);
     }
 }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/DetachedAssociationFunction.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/DetachedAssociationFunction.java
index 186d73dbe3..e1eb67fc98 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/DetachedAssociationFunction.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/DetachedAssociationFunction.java
@@ -7,9 +7,9 @@ import java.util.List;
 import java.util.Objects;
 import java.util.function.Function;
 
-public class DetachedAssociationFunction implements Function<Query.Criterion, 
List<DetachedAssociationCriteria>> {
+public class DetachedAssociationFunction implements Function<Query.Criterion, 
List<DetachedAssociationCriteria<?>>> {
     @Override
-    public List<DetachedAssociationCriteria> apply(Query.Criterion o) {
+    public List<DetachedAssociationCriteria<?>> apply(Query.Criterion o) {
         List<Query.Criterion> criteria;
         if (o instanceof Query.In c && Objects.nonNull(c.getSubquery()) ) {
             criteria = c.getSubquery().getCriteria();
@@ -23,8 +23,8 @@ public class DetachedAssociationFunction implements 
Function<Query.Criterion, Li
             criteria = List.of(o);
         }
         return criteria.stream()
-                .filter(DetachedAssociationCriteria.class::isInstance)
-                .map(DetachedAssociationCriteria.class::cast)
-                .toList();
+                .filter(it -> it instanceof DetachedAssociationCriteria)
+                .map(it -> (DetachedAssociationCriteria<?>) it)
+                .collect(java.util.stream.Collectors.toList());
     }
 }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/JpaFromProvider.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/JpaFromProvider.java
index 4a4926b477..b0d907e93b 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/JpaFromProvider.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/JpaFromProvider.java
@@ -75,15 +75,16 @@ public class JpaFromProvider implements Cloneable {
         return fromsByName;
     }
 
-    private Map<String, From<?, ?>> createDetachedFroms(JpaCriteriaQuery<?> 
cq, List<DetachedAssociationCriteria> detachedAssociationCriteriaList) {
-        return detachedAssociationCriteriaList.stream()
+    private Map<String, From<?, ?>> createDetachedFroms(JpaCriteriaQuery<?> 
cq, List<DetachedAssociationCriteria<?>> detachedAssociationCriteriaList) {
+        return detachedAssociationCriteriaList
+                .stream()
                 .collect(Collectors.toMap(
                         DetachedAssociationCriteria::getAssociationPath,
-                        criteria -> 
cq.from(criteria.getAssociation().getOwner().getJavaClass()) , (oldValue, 
newValue) -> newValue)
+                        criteria -> (From<?, ?>) 
cq.from(criteria.getAssociation().getOwner().getJavaClass()) , (oldValue, 
newValue) -> newValue)
                 );
     }
 
-    private Map<String, DetachedAssociationCriteria> 
createAliasMap(List<DetachedAssociationCriteria> 
detachedAssociationCriteriaList) {
+    private Map<String, DetachedAssociationCriteria<?>> 
createAliasMap(List<DetachedAssociationCriteria<?>> 
detachedAssociationCriteriaList) {
         // Use a merge function and a stable map type to avoid DuplicateKey 
exceptions when the same
         // association path/alias appears multiple times (e.g., referenced in 
both predicate and sort).
         // Keep the first occurrence to preserve deterministic aliasing.
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/PredicateGenerator.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/PredicateGenerator.java
index 98b0e495e0..20c22e5813 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/PredicateGenerator.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/PredicateGenerator.java
@@ -41,7 +41,7 @@ public class PredicateGenerator {
     public Predicate[] getPredicates(HibernateCriteriaBuilder cb,
                                      CriteriaQuery<?> criteriaQuery,
                                      From<?, ?> root_,
-                                     List<Query.Criterion> criteriaList,
+                                     List criteriaList,
                                      JpaFromProvider fromsByProvider, 
                                      PersistentEntity entity) {
 
@@ -57,7 +57,7 @@ public class PredicateGenerator {
         return list.toArray(new Predicate[0]);
     }
 
-    private Predicate handleCriterion(HibernateCriteriaBuilder cb, 
CriteriaQuery<?> criteriaQuery, From<?, ?> root, JpaFromProvider 
fromsByProvider, PersistentEntity entity, Query.Criterion criterion) {
+    private Predicate handleCriterion(HibernateCriteriaBuilder cb, 
CriteriaQuery<?> criteriaQuery, From<?, ?> root, JpaFromProvider 
fromsByProvider, PersistentEntity entity, Object criterion) {
         if (criterion instanceof Query.Junction junction) {
             return handleJunction(cb, criteriaQuery, root, fromsByProvider, 
entity, junction);
         } else if (criterion instanceof Query.DistinctProjection) {

Reply via email to