/** * PUBLIC: A logical expression for the size of collection <code>attributeName</code>. * <p>Example: * <pre><blockquote> * TopLink: employee.size("phoneNumbers") * Java: employee.getPhoneNumbers().size() * SQL: SELECT ... FROM EMP t0 WHERE ... * (SELECT COUNT(*) FROM PHONE t1 WHERE (t0.EMP_ID = t1.EMP_ID)) * </blockquote></pre> * This is a case where a fast operation in java does not translate to an * equally fast operation in SQL, requiring a correlated subselect. */ public Expression size(String attributeName) { // Create an anoymous subquery that will get its reference class // set during SubSelectExpression.normalize. ReportQuery subQuery = new ReportQuery(); subQuery.addCount(); subQuery.setSelectionCriteria(subQuery.getExpressionBuilder().equal(this.anyOf(attributeName))); return subQuery(subQuery); }
subSelectCriteria = subBuilder.equal(base).and(subSelectCriteria); } else { subSelectCriteria = subBuilder.notEqual(base).and(subSelectCriteria);
/** * PUBLIC: A logical expression for the size of collection expression. * <p>Example: * <pre><blockquote> * TopLink: employee.size(Class returnType) * Java: employee.getPhoneNumbers().size() * SQL: SELECT ... FROM EMP t0 WHERE ... * (SELECT COUNT(*) FROM PHONE t1 WHERE (t0.EMP_ID = t1.EMP_ID)) * </blockquote></pre> * This is a case where a fast operation in java does not translate to an * equally fast operation in SQL, requiring a correlated subselect. */ public Expression size(Class returnType) { // Create an anonymous subquery that will get its reference class // set during SubSelectExpression.normalize. ReportQuery subQuery = new ReportQuery(); subQuery.addCount("COUNT", subQuery.getExpressionBuilder(), returnType); subQuery.setSelectionCriteria(subQuery.getExpressionBuilder().equal(this)); if (((BaseExpression)this).getBaseExpression() == null){ return this.subQuery(subQuery); } return ((BaseExpression)this).getBaseExpression().subQuery(subQuery); }
subSelectCriteria = subBuilder.equal(base).and(subSelectCriteria); } else { subSelectCriteria = subBuilder.notEqual(base).and(subSelectCriteria);
/** * Create a predicate that tests whether an element is not a member of a * collection. * * @param elem * element expression * @param collection * expression * @return predicate */ public <E, C extends Collection<E>> Predicate isNotMember(Expression<E> elem, Expression<C> collection){ ReportQuery subQuery = new ReportQuery(); subQuery.setReferenceClass(((ExpressionImpl)elem).getJavaType()); org.eclipse.persistence.expressions.ExpressionBuilder elemBuilder = new org.eclipse.persistence.expressions.ExpressionBuilder(); org.eclipse.persistence.expressions.Expression collectionExp =((InternalSelection)collection).getCurrentNode(); org.eclipse.persistence.expressions.Expression elemExp =((InternalSelection)elem).getCurrentNode(); subQuery.setExpressionBuilder(elemBuilder); subQuery.setShouldRetrieveFirstPrimaryKey(true); subQuery.setSelectionCriteria(elemBuilder.equal(collectionExp).and(collectionExp.equal(elemExp))); return new CompoundExpressionImpl(metamodel, ((InternalSelection)elem).getCurrentNode().notExists(subQuery), buildList(elem, collection), "isNotMemeber"); }
subSelectCriteria = subBuilder.equal(first).and(subSelectCriteria); } else { subSelectCriteria = subBuilder.notEqual(first).and(subSelectCriteria); subSelectCriteria = subBuilder.notEqual(first).and(subSelectCriteria); } else { subSelectCriteria = subBuilder.equal(first).and(subSelectCriteria); subSelectCriteria = subBuilder.equal(first).and(subSelectCriteria); } else { subSelectCriteria = subBuilder.notEqual(first).and(subSelectCriteria);
subSelectCriteria = subBuilder.equal(first).and(subSelectCriteria); } else { subSelectCriteria = subBuilder.notEqual(first).and(subSelectCriteria); subSelectCriteria = subBuilder.notEqual(first).and(subSelectCriteria); } else { subSelectCriteria = subBuilder.equal(first).and(subSelectCriteria); subSelectCriteria = subBuilder.equal(first).and(subSelectCriteria); } else { subSelectCriteria = subBuilder.notEqual(first).and(subSelectCriteria);
/** */ public Expression addToExpression(Expression parentExpression, GenerationContext context) { if (isCollectionAttribute()) { //special case for NOT MEMBER OF if (context.hasMemberOfNode()) { return parentExpression.noneOf(name, new ExpressionBuilder().equal(context.getMemberOfNode().getLeftExpression())); } return outerJoin ? parentExpression.anyOfAllowingNone(name) : parentExpression.anyOf(name); } else { // check whether collection attribute is required if (requiresCollectionAttribute()) { throw JPQLException.invalidCollectionMemberDecl( context.getParseTreeContext().getQueryInfo(), getLine(), getColumn(), name); } if (context.shouldUseOuterJoins() || isOuterJoin()) { return parentExpression.getAllowingNull(name); } else { return parentExpression.get(name); } } }
/** */ public Expression addToExpression(Expression parentExpression, GenerationContext context) { if (isCollectionAttribute()) { //special case for NOT MEMBER OF if (context.hasMemberOfNode()) { return parentExpression.noneOf(name, new ExpressionBuilder().equal(context.getMemberOfNode().getLeftExpression())); } return outerJoin ? appendCast(parentExpression.anyOfAllowingNone(name), context) : appendCast(parentExpression.anyOf(name), context); } else { // check whether collection attribute is required if (requiresCollectionAttribute()) { throw JPQLException.invalidCollectionMemberDecl( context.getParseTreeContext().getQueryInfo(), getLine(), getColumn(), name); } if (context.shouldUseOuterJoins() || isOuterJoin()) { return appendCast(parentExpression.getAllowingNull(name), context); } else { return appendCast(parentExpression.get(name), context); } } }
/** */ public Expression addToExpression(Expression parentExpression, GenerationContext context) { if (isCollectionAttribute()) { //special case for NOT MEMBER OF if (context.hasMemberOfNode()) { return parentExpression.noneOf(name, new ExpressionBuilder().equal(context.getMemberOfNode().getLeftExpression())); } return outerJoin ? appendCast(parentExpression.anyOfAllowingNone(name), context) : appendCast(parentExpression.anyOf(name), context); } else { // check whether collection attribute is required if (requiresCollectionAttribute()) { throw JPQLException.invalidCollectionMemberDecl( context.getParseTreeContext().getQueryInfo(), getLine(), getColumn(), name); } if (context.shouldUseOuterJoins() || isOuterJoin()) { return appendCast(parentExpression.getAllowingNull(name), context); } else { return appendCast(parentExpression.get(name), context); } } }
subSelectCriteria = subBuilder.equal(this.firstChild).and(subSelectCriteria); } else { subSelectCriteria = subBuilder.notEqual(this.firstChild).and(subSelectCriteria); subSelectCriteria = subBuilder.notEqual(this.firstChild).and(subSelectCriteria); } else { subSelectCriteria = subBuilder.equal(this.firstChild).and(subSelectCriteria);