检索自动检测到的休眠方言

use*_*442 12 hibernate dialect

Hibernate可以选择自动检测hibernate.dialect.如何检索自动检测到的值?我无法找到任何相关信息.

Chs*_*y76 20

您可以从SessionFactory中检索它,但您需要先将其转换为SessionFactoryImplementor:

SessionFactory sessionFactory = ...; // you should have this reference
Dialect dialect = ((SessionFactoryImplementor) sessionFactory).getDialect();
Run Code Online (Sandbox Code Playgroud)

上面将检索会话工厂当前正在使用的方言实例,如果没有通过属性显式指定,则会自动检测实例.


Mha*_*mDw 5

从 Hibernate 5.2+ 开始,获取方言的最合适方法是:

EntityManager em ...
Session session = em.unwrap(Session.class);
SessionFactory sessionFactory = session.getSessionFactory();
Dialect dialect = ((SessionFactoryImplementor) sessionFactory).getJdbcServices().getDialect();
Run Code Online (Sandbox Code Playgroud)