org.dellroad.querystream.jpa.DeleteStream Maven / Gradle / Ivy
/*
* Copyright (C) 2018 Archie L. Cobbs. All rights reserved.
*/
package org.dellroad.querystream.jpa;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import java.util.Set;
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.Query;
import javax.persistence.TemporalType;
import javax.persistence.criteria.CriteriaDelete;
import javax.persistence.criteria.Expression;
import javax.persistence.criteria.Root;
import javax.persistence.metamodel.SingularAttribute;
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 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(Set> params);
@Override
DeleteStream withLoadGraph(String name);
@Override
DeleteStream withFetchGraph(String name);
}