From 2219952336976b8a43fa420c713145c5d77e5e8b Mon Sep 17 00:00:00 2001 From: "Greg L. Turnquist" Date: Mon, 24 Jul 2023 14:08:31 -0500 Subject: [PATCH] Fetch HQL from Hibernate using a different API. See #3085 --- .../data/jpa/provider/HibernateUtils.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/spring-data-jpa/src/main/java/org/springframework/data/jpa/provider/HibernateUtils.java b/spring-data-jpa/src/main/java/org/springframework/data/jpa/provider/HibernateUtils.java index 92983f134..b02212311 100644 --- a/spring-data-jpa/src/main/java/org/springframework/data/jpa/provider/HibernateUtils.java +++ b/spring-data-jpa/src/main/java/org/springframework/data/jpa/provider/HibernateUtils.java @@ -45,17 +45,23 @@ public abstract class HibernateUtils { try { // Try the new Hibernate implementation first - if (query instanceof SqmQuery) { - return ((SqmQuery) query).getSqmStatement().toHqlString(); + if (query instanceof SqmQuery sqmQuery) { + + String hql = sqmQuery.getQueryString(); + + if (!hql.equals("")) { + return hql; + } + + return sqmQuery.getSqmStatement().toHqlString(); } // Couple of cases in which this still breaks, see HHH-15389 } catch (RuntimeException o_O) {} // Try the old way, as it still works in some cases (haven't investigated in which exactly) - - if (query instanceof Query) { - return ((Query) query).getQueryString(); + if (query instanceof Query hibernateQuery) { + return hibernateQuery.getQueryString(); } else { throw new IllegalArgumentException("Don't know how to extract the query string from " + query); }