/* * 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.produce.spi.criteria; import java.math.BigDecimal; import java.math.BigInteger; import java.util.Collection; import javax.persistence.criteria.Expression; import org.hibernate.persister.queryable.spi.ExpressableType; import org.hibernate.query.sqm.produce.spi.criteria.select.JpaSelection; import org.hibernate.query.sqm.tree.expression.SqmExpression; /** * @author Steve Ebersole */ public interface JpaExpression<T> extends Expression<T>, JpaSelection<T> { ExpressableType getExpressionType(); SqmExpression visitExpression(CriteriaVisitor visitor); /** * See {@link javax.persistence.criteria.CriteriaBuilder#toLong} * * @return <tt>this</tt> but as a long */ JpaExpression<Long> asLong(); /** * See {@link javax.persistence.criteria.CriteriaBuilder#toInteger} * * @return <tt>this</tt> but as an integer */ JpaExpression<Integer> asInteger(); /** * See {@link javax.persistence.criteria.CriteriaBuilder#toFloat} * * @return <tt>this</tt> but as a float */ JpaExpression<Float> asFloat(); /** * See {@link javax.persistence.criteria.CriteriaBuilder#toDouble} * * @return <tt>this</tt> but as a double */ JpaExpression<Double> asDouble(); /** * See {@link javax.persistence.criteria.CriteriaBuilder#toBigDecimal} * * @return <tt>this</tt> but as a {@link BigDecimal} */ JpaExpression<BigDecimal> asBigDecimal(); /** * See {@link javax.persistence.criteria.CriteriaBuilder#toBigInteger} * * @return <tt>this</tt> but as a {@link BigInteger} */ JpaExpression<BigInteger> asBigInteger(); /** * See {@link javax.persistence.criteria.CriteriaBuilder#toString} * * @return <tt>this</tt> but as a string */ JpaExpression<String> asString(); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Co-variant returns @Override JpaPredicate isNull(); @Override JpaPredicate isNotNull(); @Override JpaPredicate in(Object... values); @Override JpaPredicate in(Expression<?>[] values); @Override JpaPredicate in(Collection<?> values); @Override JpaPredicate in(Expression<Collection<?>> values); @Override <X> JpaExpression<X> as(Class<X> type); @Override JpaSelection<T> alias(String name); }