是否可以在运行时使用 EntityManager 将 HSQL 语句转换为 SQL?
我找到了这个解决方案,但我没有 sessionFactory,我有 EntityManager
protected String toSql(String hqlQueryText) {
if (sessionFactory != null && hqlQueryText != null && hqlQueryText.trim().length() > 0) {
final QueryTranslatorFactory translatorFactory = new ASTQueryTranslatorFactory();
final SessionFactoryImplementor factory = (SessionFactoryImplementor) sessionFactory;
final QueryTranslator translator = translatorFactory.createQueryTranslator(hqlQueryText, hqlQueryText,
Collections.EMPTY_MAP, factory);
translator.compile(Collections.EMPTY_MAP, false);
return translator.getSQLString();
}
return null;
}
最佳答案
如果您获得了 EntityManager,则可以使用以下代码来获得 SessionFactory:
EntityManager em = ...
SessionFactory sf = ((EntityManagerFactoryImpl)em.getEntityManagerFactory()).getSessionFactory();
关于java - Java 5 中的 HQL 到 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11739929/