JPQL查询转换为SQL查询

3

能否将JPQL查询转换为SQL并将此查询保存到数据库中?

我在开发程序时想要编写JPQL查询。但是当部署应用程序到服务器上时,需要根据数据库编译查询为本地SQL。


你说的“保存”查询到数据库是什么意思?你是指在数据库中有一个查询表格还是其他的方式? - Konstantin Yovkov
我不明白你的意思。Hibernate会为你完成这个任务:你只需要执行一个JPQL查询,它就会将其转换成SQL并执行。有什么问题吗? - JB Nizet
是的,我需要将查询保存在数据库中的查询表中。 - Oleksandr Samsonov
我知道Hibernate,但出于某些原因,我需要使用本地SQL。 - Oleksandr Samsonov
1
你们使用的JPA实现是什么? - ben75
2个回答

9

我找到了Hibernate HQL查询的答案;

final Query query = sessionFactory.getCurrentSession().createQuery(hql);

final QueryTranslatorFactory ast = new ASTQueryTranslatorFactory();
final QueryTranslatorImpl newQueryTranslator = (QueryTranslatorImpl) ast.createQueryTranslator(queryId, query.getQueryString(), Collections.EMPTY_MAP, (SessionFactoryImplementor) sessionFactory);
newQueryTranslator.compile(null, false);
sql = newQueryTranslator.getSQLString();

感谢:

http://good-old-mushroom-called-bedla.blogspot.com/2012/04/how-to-convert-hql-to-sql-in-hibernate.html


2
这个功能将会被添加到 JPA 规范的新版本中。 - mujib ishola
1
@oleksandr-samsonov 如何使用Spring Data JPA在JPQL中实现它? - Krish

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接