Skip to content

Commit b244b4a

Browse files
committed
further improved Hibernate 6.6.0 fix
1 parent ad6f8d2 commit b244b4a

File tree

1 file changed

+5
-7
lines changed
  • src/main/java/org/omnifaces/persistence

1 file changed

+5
-7
lines changed

src/main/java/org/omnifaces/persistence/JPA.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import static java.util.stream.Collectors.toList;
1717
import static org.omnifaces.persistence.Database.POSTGRESQL;
1818
import static org.omnifaces.persistence.Provider.HIBERNATE;
19-
import static org.omnifaces.utils.reflect.Reflections.findClass;
19+
import static org.omnifaces.utils.reflect.Reflections.findMethod;
2020
import static org.omnifaces.utils.reflect.Reflections.invokeMethod;
2121
import static org.omnifaces.utils.stream.Collectors.toMap;
2222
import static org.omnifaces.utils.stream.Streams.stream;
@@ -79,10 +79,6 @@ public final class JPA {
7979
public static final String QUERY_HINT_CACHE_RETRIEVE_MODE = "jakarta.persistence.cache.retrieveMode"; // USE | BYPASS
8080
public static final String PROPERTY_VALIDATION_MODE = "jakarta.persistence.validation.mode"; // AUTO | CALLBACK | NONE
8181

82-
// Private constants ------------------------------------------------------------------------------------------------------------------
83-
84-
private static final Optional<Class<Object>> HIBERNATE_6_6_0_JPA_EXPRESSION = findClass("org.hibernate.query.criteria.JpaExpression");
85-
8682
// Constructors -----------------------------------------------------------------------------------------------------------------------
8783

8884
private JPA() {
@@ -362,8 +358,10 @@ public static Expression<String> castAsString(CriteriaBuilder builder, Expressio
362358
// NOTE: Improvement for all providers is expected in JPA 3.2 with new Expression#cast() API.
363359

364360
if (Provider.is(HIBERNATE)) {
365-
if (HIBERNATE_6_6_0_JPA_EXPRESSION.isPresent() && HIBERNATE_6_6_0_JPA_EXPRESSION.get().isInstance(expression)) {
366-
return invokeMethod(expression, "cast", String.class); // https://hibernate.atlassian.net/browse/HHH-18710
361+
var cast = findMethod(expression, "cast", Class.class);
362+
363+
if (cast.isPresent()) { // Hibernate 6.6.0.
364+
return invokeMethod(expression, cast.get(), String.class); // https://hibernate.atlassian.net/browse/HHH-18710
367365
}
368366
else {
369367
return expression.as(String.class);

0 commit comments

Comments
 (0)