
org.dellroad.querystream.jpa.BooleanValue Maven / Gradle / Ivy
Show all versions of querystream-jpa Show documentation
/*
* Copyright (C) 2018 Archie L. Cobbs. All rights reserved.
*/
package org.dellroad.querystream.jpa;
import jakarta.persistence.FlushModeType;
import jakarta.persistence.LockModeType;
import jakarta.persistence.NoResultException;
import jakarta.persistence.Parameter;
import jakarta.persistence.TemporalType;
import jakarta.persistence.criteria.Expression;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Function;
/**
* A boolean {@link ExprValue}.
*/
public interface BooleanValue extends ExprValue> {
/**
* Invert this instance.
*
* @return inverse value
*/
BooleanValue not();
/**
* Build and evaluate a JPA query based on this instance and return the single non-NULL result.
*
*
* This variant of {@link #value} is useful when it is known that NULL won't be returned.
*
* @return result of executed query
* @throws NoResultException if the query returns NULL
*/
default boolean booleanValue() {
final Boolean value = this.value();
if (value == null)
throw new NoResultException("NULL value returned from query");
return (boolean)value;
}
// Narrowing overrides (QueryStream)
@Override
BooleanValue bind(Ref> ref);
@Override
BooleanValue peek(Consumer super Expression> peeker);
@Override
BooleanValue filter(Function super Expression, ? extends Expression> predicateBuilder);
@Override
BooleanValue withFlushMode(FlushModeType flushMode);
@Override
BooleanValue withLockMode(LockModeType lockMode);
@Override
BooleanValue withHint(String name, Object value);
@Override
BooleanValue withHints(Map hints);
@Override
BooleanValue withParam(Parameter parameter, T value);
@Override
BooleanValue withParam(Parameter parameter, Date value, TemporalType temporalType);
@Override
BooleanValue withParam(Parameter parameter, Calendar value, TemporalType temporalType);
@Override
BooleanValue withParams(Iterable extends ParamBinding>> params);
@Override
BooleanValue withLoadGraph(String name);
@Override
BooleanValue withFetchGraph(String name);
}