protected Query createQuery(EntityManager em, LoadContext context, boolean singleResult) { LoadContext.Query contextQuery = context.getQuery(); RdbmsQueryBuilder queryBuilder = AppBeans.get(RdbmsQueryBuilder.NAME); queryBuilder.init( contextQuery == null ? null : contextQuery.getQueryString(), contextQuery == null ? null : contextQuery.getCondition(), contextQuery == null ? null : contextQuery.getSort(), contextQuery == null ? null : contextQuery.getParameters(), contextQuery == null ? null : contextQuery.getNoConversionParams(), context.getId(), context.getMetaClass() ); queryBuilder.setSingleResult(singleResult); if (!context.getPrevQueries().isEmpty()) { log.debug("Restrict query by previous results"); queryBuilder.restrictByPreviousResults(userSessionSource.getUserSession().getId(), context.getQueryKey()); } Query query = queryBuilder.getQuery(em); if (contextQuery != null) { if (contextQuery.getFirstResult() != 0) query.setFirstResult(contextQuery.getFirstResult()); if (contextQuery.getMaxResults() != 0) query.setMaxResults(contextQuery.getMaxResults()); if (contextQuery.isCacheable()) { query.setCacheable(contextQuery.isCacheable()); } } return query; }