package com.hongqiang.shop.modules.shipping.dao; import java.util.ArrayList; import java.util.List; import javax.persistence.FlushModeType; import javax.persistence.NoResultException; import org.springframework.stereotype.Repository; import com.hongqiang.shop.common.base.persistence.BaseDaoImpl; import com.hongqiang.shop.common.base.persistence.Page; import com.hongqiang.shop.common.utils.Filter; import com.hongqiang.shop.common.utils.Order; import com.hongqiang.shop.common.utils.Pageable; import com.hongqiang.shop.website.entity.DeliveryTemplate; @Repository public class DeliveryTemplateDaoImpl extends BaseDaoImpl<DeliveryTemplate,Long> implements DeliveryTemplateDaoCustom { @Override public DeliveryTemplate findDefault() { try { String str = "select deliveryTemplate from DeliveryTemplate deliveryTemplate where deliveryTemplate.isDefault = true"; return (DeliveryTemplate) this.getEntityManager() .createQuery(str, DeliveryTemplate.class) .setFlushMode(FlushModeType.COMMIT).getSingleResult(); } catch (NoResultException localNoResultException) { } return null; } @Override public List<DeliveryTemplate> findList(Integer first, Integer count, List<Filter> filters, List<Order> orders){ String qlString = "select deliveryTemplate from DeliveryTemplate deliveryTemplate where 1=1 "; List<Object> parameter = new ArrayList<Object>(); return super.findList(qlString, parameter, first, count, filters, orders); } @Override public List<DeliveryTemplate> findAll(){ return findList(null, null, null, null); } @Override public Page<DeliveryTemplate> findPage(Pageable pageable) { String qlString = "select deliveryTemplate from DeliveryTemplate deliveryTemplate where 1=1 "; List<Object> parameter = new ArrayList<Object>(); return super.findPage(qlString, parameter, pageable); } @Override public void persist(DeliveryTemplate deliveryTemplate) { if (deliveryTemplate.getIsDefault().booleanValue()) { String str = "update DeliveryTemplate deliveryTemplate set deliveryTemplate.isDefault = false "+ "where deliveryTemplate.isDefault = true"; this.getEntityManager().createQuery(str) .setFlushMode(FlushModeType.COMMIT).executeUpdate(); } super.persist(deliveryTemplate); } @Override public DeliveryTemplate merge(DeliveryTemplate deliveryTemplate) { if (deliveryTemplate.getIsDefault().booleanValue()) { String str = "update DeliveryTemplate deliveryTemplate set deliveryTemplate.isDefault = false "+ "where deliveryTemplate.isDefault = true and deliveryTemplate != :deliveryTemplate"; this.getEntityManager().createQuery(str) .setFlushMode(FlushModeType.COMMIT) .setParameter("deliveryTemplate", deliveryTemplate) .executeUpdate(); } return (DeliveryTemplate) super.merge(deliveryTemplate); } }