8

也许我遗漏了一些东西,但我只是想(在我的 java 程序中)从javax.persistence.Query对象中获取查询字符串?Query对象本身似乎没有这样做的方法。我也知道我们的经理不希望我们使用 Spring 框架的东西(例如使用他们的QueryUtils类)。

有没有办法简单地从javax.persistence.Query对象中获取查询字符串(同样,在 java 程序中)?!

4

4 回答 4

3

没问题。休眠:

query.unwrap(org.hibernate.Query.class).getQueryString()

或eclipselink

query.unwrap(JpaQuery.class).getDatabaseQuery().getJPQLString(); // doesn't work for CriteriaQuery query.unwrap(JpaQuery.class).getDatabaseQuery().getSQLString();

或打开 JPA

query.unwrap(org.apache.openjpa.persistence.QueryImpl.class).getQueryString()

……你懂的……

于 2019-04-25T18:01:45.887 回答
1

JPA中没有标准方法,

如果您使用的是 EclipseLink,请参阅,

http://wiki.eclipse.org/EclipseLink/FAQ/JPA#How_to_get_the_SQL_for_a_Query.3F

于 2012-11-29T14:54:45.230 回答
0

没有 JPA 标准的方法,但一些实现有自己的方法。例如 DataNucleus JPA 允许你做

query.toString();

查看您的实现文档以了解他们是如何做到的。另请参阅此博客条目 http://antoniogoncalves.org/2012/05/24/how-to-get-the-jpqlsql-string-from-a-criteriaquery-in-jpa/

于 2012-11-28T16:54:54.713 回答
0

如果 JPA 由 hibernate 提供,请编辑您的持久性属性文件。添加以下部分 -

<property name="hibernate.show_sql" value="true"/>
于 2015-04-28T16:26:45.100 回答