Skip to content

Commit 78a73e5

Browse files
committed
Add missing Hibernate 6.2 proxy hints
This commit contributes proxy hints needed by SharedEntityManagerCreator for org.hibernate.query.sqm.internal.QuerySqmImpl interfaces. Until Hibernate 6.1, those hints were erroneously provided at GraalVM reachability metadata level. As of Hibernate 6.2, they are not, hence the need to contribute them at Spring Framework level. A related smoke test has been contributed via spring-projects/spring-aot-smoke-tests#188. Closes gh-31050
1 parent c7269fe commit 78a73e5

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

spring-orm/src/main/java/org/springframework/orm/jpa/EntityManagerRuntimeHints.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ class EntityManagerRuntimeHints implements RuntimeHintsRegistrar {
3737

3838
private static final String ENTITY_MANAGER_FACTORY_CLASS_NAME = "jakarta.persistence.EntityManagerFactory";
3939

40+
private static final String QUERY_SQM_IMPL_CLASS_NAME = "org.hibernate.query.sqm.internal.QuerySqmImpl";
41+
4042
@Override
4143
public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
4244
if (ClassUtils.isPresent(HIBERNATE_SESSION_FACTORY_CLASS_NAME, classLoader)) {
@@ -53,5 +55,11 @@ public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
5355
Collections.emptyList(), ExecutableMode.INVOKE);
5456
});
5557
}
58+
try {
59+
Class<?> clazz = ClassUtils.forName(QUERY_SQM_IMPL_CLASS_NAME, classLoader);
60+
hints.proxies().registerJdkProxy(ClassUtils.getAllInterfacesForClass(clazz, classLoader));
61+
}
62+
catch (ClassNotFoundException ignored) {
63+
}
5664
}
5765
}

0 commit comments

Comments
 (0)