
org.dellroad.querystream.jpa.DeleteStream 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.Parameter;
import jakarta.persistence.Query;
import jakarta.persistence.TemporalType;
import jakarta.persistence.criteria.CriteriaDelete;
import jakarta.persistence.criteria.Expression;
import jakarta.persistence.criteria.Root;
import jakarta.persistence.criteria.Selection;
import jakarta.persistence.metamodel.SingularAttribute;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Function;
import org.dellroad.querystream.jpa.querytype.DeleteType;
/**
* Builder for JPA criteria bulk delete queries using a {@link java.util.stream.Stream}-like API.
*/
public interface DeleteStream extends QueryStream, CriteriaDelete, CriteriaDelete, Query> {
/**
* Build and execute a JPA query based on this instance.
*
*
* Ultimately delegates to {@link Query#executeUpdate} and can throw any exception thrown by that method.
*
* @return the number of entities deleted
*/
int delete();
// Narrowing overrides
@Override
DeleteType getQueryType();
@Override
DeleteStream bind(Ref> ref);
@Override
> DeleteStream bind(Ref ref,
Function super Root, ? extends S2> refFunction);
@Override
DeleteStream peek(Consumer super Root> peeker);
@Override
DeleteStream filter(SingularAttribute super X, Boolean> attribute);
@Override
DeleteStream filter(Function super Root, ? extends Expression> predicateBuilder);
@Override
DeleteStream limit(int maxSize);
@Override
DeleteStream skip(int num);
@Override
DeleteStream withFlushMode(FlushModeType flushMode);
@Override
DeleteStream withLockMode(LockModeType lockMode);
@Override
DeleteStream withHint(String name, Object value);
@Override
DeleteStream withHints(Map hints);
@Override
DeleteStream withParam(Parameter parameter, T value);
@Override
DeleteStream withParam(Parameter parameter, Date value, TemporalType temporalType);
@Override
DeleteStream withParam(Parameter parameter, Calendar value, TemporalType temporalType);
@Override
DeleteStream withParams(Iterable extends ParamBinding>> params);
@Override
DeleteStream withLoadGraph(String name);
@Override
DeleteStream withFetchGraph(String name);
}