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.modules.entity.DeliveryCenter;
@Repository
public class DeliveryCenterDaoImpl extends BaseDaoImpl<DeliveryCenter,Long>
implements DeliveryCenterDaoCustom {
@Override
public DeliveryCenter findDefault() {
try {
String str = "select deliveryCenter from DeliveryCenter deliveryCenter where deliveryCenter.isDefault = true";
return (DeliveryCenter) this.getEntityManager()
.createQuery(str, DeliveryCenter.class)
.setFlushMode(FlushModeType.COMMIT).getSingleResult();
} catch (NoResultException localNoResultException) {
}
return null;
}
@Override
public List<DeliveryCenter> findList(Integer first, Integer count,
List<Filter> filters, List<Order> orders) {
String qlString = "select deliveryCenter from DeliveryCenter deliveryCenter where 1=1 ";
List<Object> parameter = new ArrayList<Object>();
return super.findList(qlString, parameter, first, count, filters, orders);
}
@Override
public List<DeliveryCenter> findAll(){
return findList(null, null, null, null);
}
@Override
public Page<DeliveryCenter> findPage(Pageable pageable){
String qlString = "select deliveryCenter from DeliveryCenter deliveryCenter where 1=1 ";
List<Object> parameter = new ArrayList<Object>();
return super.findPage(qlString, parameter, pageable) ;
}
@Override
public void persist(DeliveryCenter deliveryCenter) {
if (deliveryCenter.getIsDefault().booleanValue()) {
String str = "update DeliveryCenter deliveryCenter set deliveryCenter.isDefault = false where deliveryCenter.isDefault = true";
this.getEntityManager().createQuery(str)
.setFlushMode(FlushModeType.COMMIT).executeUpdate();
}
super.persist(deliveryCenter);
}
@Override
public DeliveryCenter merge(DeliveryCenter deliveryCenter) {
if (deliveryCenter.getIsDefault().booleanValue()) {
String str = "update DeliveryCenter deliveryCenter set deliveryCenter.isDefault = false "+
"where deliveryCenter.isDefault = true and deliveryCenter != :deliveryCenter";
this.getEntityManager().createQuery(str)
.setFlushMode(FlushModeType.COMMIT)
.setParameter("deliveryCenter", deliveryCenter)
.executeUpdate();
}
return (DeliveryCenter) super.merge(deliveryCenter);
}
}