private Query createQuery(boolean forCount) { Expression<?> source = getSource(); // serialize JDOQLSerializer serializer = new JDOQLSerializer(getTemplates(), source); serializer.serialize(queryMixin.getMetadata(), forCount, false); logQuery(serializer.toString()); // create Query Query query = persistenceManager.newQuery(serializer.toString()); orderedConstants = serializer.getConstants(); queries.add(query); if (!forCount) { List<? extends Expression<?>> projection = queryMixin.getMetadata().getProjection(); Class<?> exprType = projection.get(0).getClass(); if (exprType.equals(QTuple.class)) { query.setResultClass(JDOTuple.class); } else if (FactoryExpression.class.isAssignableFrom(exprType)) { query.setResultClass(projection.get(0).getType()); } if (!fetchGroups.isEmpty()) { query.getFetchPlan().setGroups(fetchGroups); } if (maxFetchDepth != null) { query.getFetchPlan().setMaxFetchDepth(maxFetchDepth); } } return query; }
@Override public String toString() { if (!queryMixin.getMetadata().getJoins().isEmpty()) { Expression<?> source = getSource(); JDOQLSerializer serializer = new JDOQLSerializer(getTemplates(), source); serializer.serialize(queryMixin.getMetadata(), false, false); return serializer.toString().trim(); } else { return super.toString(); } }