Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java5中的HQL到SQL_Java_Sql_Hibernate_Jakarta Ee - Fatal编程技术网

Java5中的HQL到SQL

Java5中的HQL到SQL,java,sql,hibernate,jakarta-ee,Java,Sql,Hibernate,Jakarta Ee,是否可以在运行时使用EntityManager将HSQL语句转换为SQL 我找到了这个解决方案,但我没有sessionFactory,我有EntityManager protected String toSql(String hqlQueryText) { if (sessionFactory != null && hqlQueryText != null && hqlQueryText.trim().length() > 0) {

是否可以在运行时使用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();

抱歉,我在EntityManager API中找不到GetEntityManager Factory,它自JPA 2.0以来就可用。见: