Hibernate有自动检测
hibernate.dialect
的选项。我如何检索该自动检测的值?我找不到任何相关信息。您可以从SessionFactory中检索它,但您需要首先将其转换为SessionFactoryImplementor:
SessionFactory sessionFactory = ...; // you should have this reference
Dialect dialect = ((SessionFactoryImplementor) sessionFactory).getDialect();
以上代码将检索由会话工厂当前使用的方言实例,如果没有通过属性显式指定,则为自动检测实例。
从 Hibernate 5.2+ 开始,获取 Dialect 最合适的方式是:
EntityManager em ...
Session session = em.unwrap(Session.class);
SessionFactory sessionFactory = session.getSessionFactory();
Dialect dialect = ((SessionFactoryImplementor) sessionFactory).getJdbcServices().getDialect();