Java 类org.hibernate.jpa.internal.QueryImpl 实例源码
项目:spring-data-jpa-extra
文件:FreemarkerTemplateQuery.java
public Query createJpaQuery(String queryString) {
Class<?> objectType = getQueryMethod().getReturnedObjectType();
//get original proxy query.
Query oriProxyQuery;
//must be hibernate QueryImpl
QueryImpl query;
if (useJpaSpec && getQueryMethod().isQueryForEntity()) {
oriProxyQuery = getEntityManager().createNativeQuery(queryString, objectType);
// QueryImpl query = AopTargetUtils.getTarget(oriProxyQuery);
} else {
oriProxyQuery = getEntityManager().createNativeQuery(queryString);
query = AopTargetUtils.getTarget(oriProxyQuery);
//find generic type
ClassTypeInformation<?> ctif = ClassTypeInformation.from(objectType);
TypeInformation<?> actualType = ctif.getActualType();
if (actualType == null){
actualType = ctif.getRawTypeInformation();
}
Class<?> genericType = actualType.getType();
if (genericType != null && genericType != Void.class) {
QueryBuilder.transform(query.getHibernateQuery(), genericType);
}
}
//return the original proxy query, for a series of JPA actions, e.g.:close em.
return oriProxyQuery;
}
项目:spring-data-jpa-extra
文件:FreemarkerTemplateQuery.java
public Query bind(Query query, Object[] values) {
//get proxy target if exist.
//must be hibernate QueryImpl
QueryImpl targetQuery = AopTargetUtils.getTarget(query);
SQLQuery sqlQuery = (SQLQuery) targetQuery.getHibernateQuery();
Map<String, Object> params = getParams(values);
if (!CollectionUtils.isEmpty(params)) {
QueryBuilder.setParams(sqlQuery, params);
}
return query;
}