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