如何从javax.persistence.Query获取查询字符串?

时间:2012-11-28 16:33:00

标签: java jpa orm query-string

也许我错过了什么,但我只是想(在我的java程序中)从javax.persistence.Query对象中获取查询字符串? Query对象本身似乎没有方法可以做到这一点。另外我知道我们的经理不希望我们使用Spring框架内容(例如使用他们的QueryUtils类)。

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

4 个答案:

答案 0 :(得分:0)

没有JPA标准方式,但有些实现有自己的方法。例如,DataNucleus JPA允许您执行

query.toString();

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

答案 1 :(得分:0)

JPA中没有标准方法,

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

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

答案 2 :(得分:-1)

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

答案 3 :(得分:-1)

没问题。休眠:

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()

...您知道了......