package org.malagu.linq.lin.impl; import javax.persistence.EntityManager; import javax.persistence.criteria.CriteriaDelete; import javax.persistence.criteria.Predicate; import org.malagu.linq.lin.Lind; /** * @author Kevin Yang (mailto:[email protected]) * @since 2016年2月20日 */ public class LindImpl extends LinImpl<Lind, CriteriaDelete<?>> implements Lind { public LindImpl(Class<?> domainClass) { this(domainClass, null); } @SuppressWarnings({ "unchecked", "rawtypes" }) public LindImpl(Class<?> domainClass, EntityManager entityManager) { super(domainClass, entityManager); criteria = cb.createCriteriaDelete(domainClass); root = criteria.from((Class) domainClass); } public LindImpl(Lind parent, Class<?> domainClass) { super(parent, domainClass); } @Override public Lind createChild(Class<?> domainClass) { return new LindImpl(this, domainClass); } @Override public int delete() { if (parent != null) { applyPredicateToCriteria(); return parent.delete(); } applyPredicateToCriteria(); return em.createQuery(criteria).executeUpdate(); } protected void applyPredicateToCriteria() { Predicate predicate = parsePredicate(junction); if (predicate != null) { if (sq != null) { sq.where(predicate); } else { criteria.where(predicate); } } } }