Skip to content

Commit

Permalink
Add missing Hibernate 6.2 proxy hints
Browse files Browse the repository at this point in the history
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
  • Loading branch information
sdeleuze committed Aug 16, 2023
1 parent c7269fe commit 78a73e5
Showing 1 changed file with 8 additions and 0 deletions.
Expand Up @@ -37,6 +37,8 @@ class EntityManagerRuntimeHints implements RuntimeHintsRegistrar {

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

private static final String QUERY_SQM_IMPL_CLASS_NAME = "org.hibernate.query.sqm.internal.QuerySqmImpl";

@Override
public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
if (ClassUtils.isPresent(HIBERNATE_SESSION_FACTORY_CLASS_NAME, classLoader)) {
Expand All @@ -53,5 +55,11 @@ public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
Collections.emptyList(), ExecutableMode.INVOKE);
});
}
try {
Class<?> clazz = ClassUtils.forName(QUERY_SQM_IMPL_CLASS_NAME, classLoader);
hints.proxies().registerJdkProxy(ClassUtils.getAllInterfacesForClass(clazz, classLoader));
}
catch (ClassNotFoundException ignored) {
}
}
}

0 comments on commit 78a73e5

Please sign in to comment.