org.hibernate.query.criteria.internal.expression.ExpressionImpl 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 .
*/
package org.hibernate.query.criteria.internal.expression;
import java.io.Serializable;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Collection;
import javax.persistence.criteria.Expression;
import javax.persistence.criteria.Predicate;
import org.hibernate.query.criteria.internal.CriteriaBuilderImpl;
import org.hibernate.query.criteria.internal.ExpressionImplementor;
import org.hibernate.query.criteria.internal.expression.function.CastFunction;
/**
* Models an expression in the criteria query language.
*
* @author Steve Ebersole
*/
public abstract class ExpressionImpl
extends SelectionImpl
implements ExpressionImplementor, Serializable {
public ExpressionImpl(CriteriaBuilderImpl criteriaBuilder, Class javaType) {
super( criteriaBuilder, javaType );
}
@Override
@SuppressWarnings({ "unchecked" })
public Expression as(Class type) {
return type.equals( getJavaType() )
? (Expression) this
: new CastFunction( criteriaBuilder(), type, this );
}
@Override
public Predicate isNull() {
return criteriaBuilder().isNull( this );
}
@Override
public Predicate isNotNull() {
return criteriaBuilder().isNotNull( this );
}
@Override
public Predicate in(Object... values) {
return criteriaBuilder().in( this, values );
}
@Override
public Predicate in(Expression... values) {
return criteriaBuilder().in( this, values );
}
@Override
public Predicate in(Collection values) {
return criteriaBuilder().in( this, values.toArray() );
}
@Override
public Predicate in(Expression> values) {
return criteriaBuilder().in( this, values );
}
@Override
@SuppressWarnings({ "unchecked" })
public ExpressionImplementor asLong() {
resetJavaType( Long.class );
return (ExpressionImplementor) this;
}
@Override
@SuppressWarnings({ "unchecked" })
public ExpressionImplementor asInteger() {
resetJavaType( Integer.class );
return (ExpressionImplementor) this;
}
@Override
@SuppressWarnings({ "unchecked" })
public ExpressionImplementor asFloat() {
resetJavaType( Float.class );
return (ExpressionImplementor) this;
}
@Override
@SuppressWarnings({ "unchecked" })
public ExpressionImplementor asDouble() {
resetJavaType( Double.class );
return (ExpressionImplementor) this;
}
@Override
@SuppressWarnings({ "unchecked" })
public ExpressionImplementor asBigDecimal() {
resetJavaType( BigDecimal.class );
return (ExpressionImplementor) this;
}
@Override
@SuppressWarnings({ "unchecked" })
public ExpressionImplementor asBigInteger() {
resetJavaType( BigInteger.class );
return (ExpressionImplementor) this;
}
@Override
@SuppressWarnings({ "unchecked" })
public ExpressionImplementor asString() {
resetJavaType( String.class );
return (ExpressionImplementor) this;
}
}