@Override public Expression getQualifier() { return query.getQualifier(); }
private void resolveAutoAliases(SelectQuery<?> query) { Expression qualifier = query.getQualifier(); if (qualifier != null) { resolveAutoAliases(qualifier); } // TODO: include aliases in prefetches? flattened attributes? }
public void validateObject(ProjectPath treeNodePath, Validator validator) { SelectQuery query = (SelectQuery) treeNodePath.getObject(); validateName(query, treeNodePath, validator); // Resolve root to Entity for further validation Entity root = validateRoot(query, treeNodePath, validator); // validate path-based parts if (root != null) { validateQualifier(root, query.getQualifier(), treeNodePath, validator); Iterator orderings = query.getOrderings().iterator(); while (orderings.hasNext()) { validateOrdering( root, (Ordering) orderings.next(), treeNodePath, validator); } if (query.getPrefetchTree() != null) { Iterator prefetches = query .getPrefetchTree() .nonPhantomNodes() .iterator(); while (prefetches.hasNext()) { validatePrefetch(root, ((PrefetchTreeNode) prefetches.next()) .getPath(), treeNodePath, validator); } } } }
if (query.getQualifier() != null) { key.append('/'); if(traversalHandler == null) { traversalHandler = new ToCacheKeyTraversalHandler(resolver.getValueObjectTypeRegistry(), key); query.getQualifier().traverse(traversalHandler);
Expression queryQualifier = parentQuery.getQualifier();
Expression queryQualifier = query.getQualifier();
Expression queryQualifier = query.getQualifier();
protected Expression extractQualifier() { // if additional qualifier is set, use it if(this.qualifier != null) { return this.qualifier; } Query q = queryAssembler.getQuery(); Expression qualifier = ((SelectQuery<?>) q).getQualifier(); // append Entity qualifiers, taking inheritance into account ObjEntity entity = getObjEntity(); if (entity != null) { ClassDescriptor descriptor = queryAssembler.getEntityResolver().getClassDescriptor(entity.getName()); Expression entityQualifier = descriptor.getEntityInheritanceTree().qualifierForEntityAndSubclasses(); if (entityQualifier != null) { qualifier = (qualifier != null) ? qualifier.andExp(entityQualifier) : entityQualifier; } } // Attaching root Db entity's qualifier if (getDbEntity() != null) { Expression dbQualifier = getDbEntity().getQualifier(); if (dbQualifier != null) { dbQualifier = dbQualifier.transform(new DbEntityQualifierTransformer()); qualifier = qualifier == null ? dbQualifier : qualifier.andExp(dbQualifier); } } return qualifier; }
@Test public void testBuildQuery_Qualifier() { Expression extraQualifier = E1.NAME.eq("X"); ResourceEntity<E1> resourceEntity = getResourceEntity(E1.class); resourceEntity.andQualifier(extraQualifier); SelectContext<E1> c1 = new SelectContext<>(E1.class); c1.setEntity(resourceEntity); SelectQuery<E1> query = makeQueryStage.buildQuery(c1); assertEquals(extraQualifier, query.getQualifier()); SelectQuery<E1> query2 = new SelectQuery<E1>(E1.class); query2.setQualifier(E1.NAME.in("a", "b")); SelectContext<E1> c2 = new SelectContext<>(E1.class); c2.setSelect(query2); c2.setEntity(resourceEntity); SelectQuery<E1> query2Amended = makeQueryStage.buildQuery(c2); assertEquals(E1.NAME.in("a", "b").andExp(E1.NAME.eq("X")), query2Amended.getQualifier()); }