我想知道是否可以检索(本机)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/