try {
Class<?> daoClass = extractFromProxy(context);
DaoComponent dao = components.lookupComponent(daoClass);
DaoMethod method = components.lookupMethod(daoClass, context.getMethod());
queryContext = createContext(context, dao, method);
QueryBuilder builder = queryBuilder.build(method);
return builder.execute(queryContext);
} catch (Exception e) {
log.error("Query execution error", e);
if (queryContext != null) {
throw new QueryInvocationException(e, queryContext);
}