将hql转换为带有参数绑定的sql

时间:2016-12-19 22:53:49

标签: sql hibernate jpa hql

我们的应用程序根据提供的过滤器动态构建hql查询。现在我有一个用例,我需要将生成的hql转换为sql并将其提供给jasper报告以生成报告。这是我到目前为止所能做到的:

将hql翻译为sql:

 private String toSql(String hql){
        QueryTranslatorFactory translatorFactory = new ASTQueryTranslatorFactory();
        Session session = this.es.getEntityManager().unwrap(Session.class);
        SessionFactoryImplementor sessionFactoryImplementor = (SessionFactoryImplementor)session.getSessionFactory();
        Map<String,Filter> filters = getEnabledFilters(session);
        QueryTranslator translator = translatorFactory.createQueryTranslator(hql,hql,filters,sessionFactoryImplementor,null);
        translator.compile(Collections.EMPTY_MAP,false);
        return translator.getSQLString();
       }

以下是我从上述方法获得的一个例子:

select person from Person person where person.id in (?);

有没有办法可以“?”绑定到实际值?示例:(20,30)和查询应如下所示:

select person from Person person where person.id in (20,30);

注意::我也在会话中启用了过滤器,我也需要能够绑定这些值。

0 个答案:

没有答案