【问题标题】:JPQL query convert to SQL queryJPQL 查询转换为 SQL 查询
【发布时间】:2013-09-17 20:44:25
【问题描述】:

是否可以将 JPQL 查询转换为 SQL 并将此查询保存到数据库?

我想在开发程序时编写 JPQL 查询。但是 whet 会将应用程序部署到服务器我需要将查询编译到本机 SQL 取决于 DB。

【问题讨论】:

  • 你对save数据库中的查询是什么意思?您有一个带有查询的表或...?
  • 我不明白你。 Hibernate 会为您做到这一点:您执行一个 JPQL 查询,它会将其转换为 SQL 并执行它。有什么问题?
  • 是的,我需要将查询保存在表中的数据库中以进行查询。
  • 我知道hibernate,但由于某些原因我需要原生SQL
  • 你的 JPA 实现是什么?

标签: java sql jpa orm jpql


【解决方案1】:

我找到了 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

【讨论】:

  • 此功能将被添加到新版本的 JPA 规范中。
  • @oleksandr-samsonov 如何使用 Spring Data JPA 为 JPQL 做到这一点?
【解决方案2】:

将没有 JPA 标准方法来获取 SQL。 EclipseLink 的特定解决方案可在 EclipseLink 的常见问题解答http://wiki.eclipse.org/EclipseLink/FAQ/JPA#How_to_get_the_SQL_for_a_Query.3F

中找到

【讨论】:

    猜你喜欢
    • 2021-10-09
    • 2011-06-12
    • 2011-09-29
    • 2017-10-29
    • 2019-07-13
    • 1970-01-01
    • 2011-03-25
    • 2011-07-05
    • 2018-10-29
    相关资源
    最近更新 更多