org.hibernate.query.sqm.tree.predicate.SqmInSubQueryPredicate Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hibernate-core Show documentation
Show all versions of hibernate-core Show documentation
Hibernate's core ORM functionality
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or http://www.gnu.org/licenses/lgpl-2.1.html
*/
package org.hibernate.query.sqm.tree.predicate;
import javax.persistence.criteria.Expression;
import org.hibernate.query.criteria.JpaExpression;
import org.hibernate.query.internal.QueryHelper;
import org.hibernate.query.sqm.NodeBuilder;
import org.hibernate.query.sqm.SqmExpressable;
import org.hibernate.query.sqm.SemanticQueryWalker;
import org.hibernate.query.sqm.tree.expression.SqmExpression;
import org.hibernate.query.sqm.tree.select.SqmSubQuery;
/**
* @author Steve Ebersole
*/
public class SqmInSubQueryPredicate extends AbstractNegatableSqmPredicate implements SqmInPredicate {
private final SqmExpression testExpression;
private final SqmSubQuery subQueryExpression;
public SqmInSubQueryPredicate(
SqmExpression testExpression,
SqmSubQuery subQueryExpression,
NodeBuilder nodeBuilder) {
this( testExpression, subQueryExpression, false, nodeBuilder );
}
@SuppressWarnings("WeakerAccess")
public SqmInSubQueryPredicate(
SqmExpression testExpression,
SqmSubQuery subQueryExpression,
boolean negated,
NodeBuilder nodeBuilder) {
super( negated, nodeBuilder );
this.testExpression = testExpression;
this.subQueryExpression = subQueryExpression;
final SqmExpressable expressableType = QueryHelper.highestPrecedenceType2(
testExpression.getNodeType(),
subQueryExpression.getNodeType()
);
testExpression.applyInferableType( expressableType );
subQueryExpression.applyInferableType( expressableType );
}
@Override
public SqmExpression getTestExpression() {
return testExpression;
}
@Override
public SqmExpression getExpression() {
return getTestExpression();
}
public SqmSubQuery getSubQueryExpression() {
return subQueryExpression;
}
@Override
public X accept(SemanticQueryWalker walker) {
return walker.visitInSubQueryPredicate( this );
}
@Override
public SqmInPredicate value(Object value) {
throw new UnsupportedOperationException( );
}
@Override
public SqmInPredicate value(Expression value) {
throw new UnsupportedOperationException( );
}
@Override
public SqmInPredicate value(JpaExpression value) {
throw new UnsupportedOperationException( );
}
}