/* * Copyright (c) 2010 Mysema Ltd. * All rights reserved. * */ package com.mysema.query.sql; import com.mysema.query.QueryMetadata; import com.mysema.query.types.Expression; import com.mysema.query.types.OperationImpl; import com.mysema.query.types.SubQueryExpression; import com.mysema.query.types.TemplateExpressionImpl; import com.mysema.query.types.expr.BooleanExpression; /** * SQLSubQuery is a subquery implementation for SQL queries * * @author tiwe * */ public class SQLSubQuery extends AbstractSQLSubQuery implements SQLCommonQuery{ private static final Expression one = TemplateExpressionImpl.create(Integer.class, "1"); public SQLSubQuery() { super(); } public SQLSubQuery(QueryMetadata metadata) { super(metadata); } public Expression union(SubQueryExpression... sq){ Expression rv = sq[0]; for (int i = 1; i < sq.length; i++){ rv = OperationImpl.create(rv.getType(), SQLTemplates.UNION, rv, sq[i]); } return rv; } @Override public BooleanExpression exists(){ return unique(one).exists(); } @Override public BooleanExpression notExists(){ return exists().not(); } }