org.dellroad.querystream.jpa.ExprValue Maven / Gradle / Ivy
/*
* Copyright (C) 2018 Archie L. Cobbs. All rights reserved.
*/
package org.dellroad.querystream.jpa;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Function;
import javax.persistence.FlushModeType;
import javax.persistence.LockModeType;
import javax.persistence.Parameter;
import javax.persistence.TemporalType;
import javax.persistence.criteria.Expression;
import javax.persistence.criteria.From;
import javax.persistence.criteria.Path;
import javax.persistence.criteria.Selection;
import javax.persistence.metamodel.MapAttribute;
import javax.persistence.metamodel.PluralAttribute;
import javax.persistence.metamodel.SingularAttribute;
/**
* An {@link ExprStream} that is guaranteed to return at most a single result.
*/
public interface ExprValue> extends SearchValue, ExprStream {
// Narrowing overrides (ExprStream)
@Override
default PathValue> map(SingularAttribute super X, Y> attribute) {
return ((PathStreamImpl>)ExprStream.super.map(attribute)).toValue();
}
@Override
default ExprValue> map(Class type, Function super S, ? extends Expression> exprFunction) {
return ((ExprStreamImpl>)ExprStream.super.map(type, exprFunction)).toValue();
}
@Override
default > ExprValue> map(PluralAttribute super X, C, E> attribute) {
return ((ExprStreamImpl>)ExprStream.super.map(attribute)).toValue();
}
@Override
default > ExprValue> map(MapAttribute super X, K, V> attribute) {
return ((ExprStreamImpl>)ExprStream.super.map(attribute)).toValue();
}
@Override
default ExprValue> mapToExpr(Class type, Function super S, ? extends Expression> exprFunction) {
return ((ExprStreamImpl>)ExprStream.super.mapToExpr(type, exprFunction)).toValue();
}
@Override
default PathValue> mapToPath(Class type, Function super S, ? extends Path> pathFunction) {
return ((PathStreamImpl>)ExprStream.super.mapToPath(type, pathFunction)).toValue();
}
@Override
default FromValue> mapToFrom(Class type, Function super S, ? extends From> fromFunction) {
return ((FromStreamImpl>)ExprStream.super.mapToFrom(type, fromFunction)).toValue();
}
@Override
default DoubleValue mapToDouble(SingularAttribute super X, ? extends Number> attribute) {
return ((DoubleStreamImpl)ExprStream.super.mapToDouble(attribute)).toValue();
}
@Override
default DoubleValue mapToDouble(Function super S, ? extends Expression extends Number>> doubleExprFunction) {
return ((DoubleStreamImpl)ExprStream.super.mapToDouble(doubleExprFunction)).toValue();
}
@Override
default LongValue mapToLong(SingularAttribute super X, ? extends Number> attribute) {
return ((LongStreamImpl)ExprStream.super.mapToLong(attribute)).toValue();
}
@Override
default LongValue mapToLong(Function super S, ? extends Expression extends Number>> longExprFunction) {
return ((LongStreamImpl)ExprStream.super.mapToLong(longExprFunction)).toValue();
}
@Override
default IntValue mapToInt(SingularAttribute super X, ? extends Number> attribute) {
return ((IntStreamImpl)ExprStream.super.mapToInt(attribute)).toValue();
}
@Override
default IntValue mapToInt(Function super S, ? extends Expression extends Number>> intExprFunction) {
return ((IntStreamImpl)ExprStream.super.mapToInt(intExprFunction)).toValue();
}
// Narrowing overrides (QueryStream)
@Override
ExprValue bind(Ref ref);
@Override
ExprValue peek(Consumer super S> peeker);
@Override
> ExprValue bind(Ref ref, Function super S, ? extends S2> refFunction);
@Override
ExprValue filter(SingularAttribute super X, Boolean> attribute);
@Override
ExprValue filter(Function super S, ? extends Expression> predicateBuilder);
@Override
ExprValue withFlushMode(FlushModeType flushMode);
@Override
ExprValue withLockMode(LockModeType lockMode);
@Override
ExprValue withHint(String name, Object value);
@Override
ExprValue withHints(Map hints);
@Override
ExprValue withParam(Parameter parameter, T value);
@Override
ExprValue withParam(Parameter parameter, Date value, TemporalType temporalType);
@Override
ExprValue withParam(Parameter parameter, Calendar value, TemporalType temporalType);
@Override
ExprValue withParams(Iterable extends ParamBinding>> params);
@Override
ExprValue withLoadGraph(String name);
@Override
ExprValue withFetchGraph(String name);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy