Вот еще одно решение, специфичное для Hibernate.Это все еще уродливо, потому что включает в себя броски вниз, но не использует отражения:
Session session = (Session) entityManager.getDelegate();
SessionFactoryImplementor sessionFactory = (SessionFactoryImplementor) session.getSessionFactory();
Dialect dialect = sessionFactory.getDialect();
if (dialect.toString().contains("Oracle")) { ... }