
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