All Downloads are FREE. Search and download functionalities are using the official Maven repository.

paa.coder.noodleCriteriaBuilder.queryBuilder.DeleteQuery Maven / Gradle / Ivy

package paa.coder.noodleCriteriaBuilder.queryBuilder;

import org.hibernate.query.Query;
import paa.coder.noodleCriteriaBuilder.NoodleFactory;
import paa.coder.noodleCriteriaBuilder.interfaces.NoodlePredicate;
import paa.coder.noodleCriteriaBuilder.queryBuilder.specifications.NoodleSpecificationBuilder;

import javax.persistence.criteria.CriteriaDelete;
import javax.persistence.criteria.Root;
import java.util.function.Function;

public class DeleteQuery extends NoodleAbstractQuery{

    protected final Class from;

    public DeleteQuery(Class from, NoodleFactory noodleFactory){
        super(noodleFactory);
        this.from = from;
    }

    @Override
    public DeleteQuery where(Function fPred){
        super.where(fPred);
        return this;
    }

    public Integer delete(){
        find(from).forEach(i->noodleFactory.getSession().detach(i));
        return deleteForce();
    }

    public Query query(){
        CriteriaDelete delete = noodleFactory.getSession().getCriteriaBuilder().createCriteriaDelete(from);
        Root root = delete.from(from);
        getWherePredicates(root,delete,noodleFactory.getSession().getCriteriaBuilder()).ifPresent(delete::where);
        return noodleFactory.getSession().createQuery(delete);
    }

    public Integer deleteForce(){
        return query().executeUpdate();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy