如何从TypedQuery获得参数值的SQL查询?



我想知道是否可以检索(本机)SQL查询,参数值,从TypedQuery获取。代码类似于:

public String getNativeSQLString(){
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Foo> criteriaQuery = criteriaBuilder.createQuery(Foo.class);
Root<Foo> root = criteriaQuery.from(Foo);
criteriaQuery.select(root);
criteriaQuery.where(getPredicatesArray());
TypedQuery<GhSummary> typedQuery = entityManager.createQuery(criteriaQuery);
// magic to transform typedQuery to Native SQL
return nativeSql;
}

返回的一个例子是:"SELECT * FROM foo WHERE id = 2 AND name IN ('name1', 'name2') ORDER BY name DESC".

我知道使用String sqlQueryString = new BasicFormatterImpl().format(typedQuery.unwrap(Query.class).getQueryString());我能够检索HQLSELECT * FROM foo WHERE id =:param0 AND name IN (:param1, :param2) ORDER BY name DESC,但它不包含值。

提前感谢。

我希望log4j配置足以满足此目的。https://www.mkyong.com/hibernate/how-to-display-hibernate-sql-parameter-values-log4j/

最新更新