5

実行時に、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;
}
4

1 に答える 1

2

EntityManagerを取得した場合は、次のコードを使用してSessionFactoryを取得できます。

EntityManager em = ...
SessionFactory sf = ((EntityManagerFactoryImpl)em.getEntityManagerFactory()).getSessionFactory();
于 2012-07-31T15:32:27.980 に答える