ConsignmentContainerRepositoryImpl.java
package com.tradecloud.repository.impl;
import com.tradecloud.domain.container.ConsignmentContainer;
import com.tradecloud.domain.container.ContainerType;
import com.tradecloud.domain.container.ContainerUsage;
import com.tradecloud.repository.ConsignmentContainerRepository;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* Created by ds on 2016/06/02.
*/
@Repository(value = "consignmentContainerRepository")
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public class ConsignmentContainerRepositoryImpl extends RepositoryBaseImplNoSearch<ConsignmentContainer> implements ConsignmentContainerRepository {
@Override
public ContainerUsage getContainerUsageById(Long id) {
String hql = "from ContainerUsage cu where cu.id = :id";
Query query = getSession().createQuery(hql);
query.setParameter("id", id);
return (ContainerUsage) query.uniqueResult();
}
@Override
public ContainerUsage getContainerUsage(Long orderId, String containerTypeCode) {
String hql = "from ContainerUsage cu where cu.order.id = :id " +
"and cu.container.containerType.code = :containerTypeCode";
Query query = getSession().createQuery(hql);
query.setParameter("id", orderId);
query.setParameter("containerTypeCode", containerTypeCode);
return (ContainerUsage) query.uniqueResult();
}
@Override
public List<ContainerType> getContainerTypesFromOrder(String orderNumber) {
String hql = "select container.containerType from ContainerUsage cu where cu.order.number = :number";
Query query = getSession().createQuery(hql);
query.setParameter("number", orderNumber);
return (List<ContainerType>) query.list();
}
@Override
public ContainerUsage getContainerUsage(String orderNumber, String containerTypeCode) {
String hql = "from ContainerUsage cu where cu.order.number = :number " +
"and cu.container.containerType.code = :containerTypeCode";
Query query = getSession().createQuery(hql);
query.setParameter("number", orderNumber);
query.setParameter("containerTypeCode", containerTypeCode);
return (ContainerUsage) query.uniqueResult();
}
/**
*
* @param orderId
* @return
*/
@Override
public int getOrderContainerUsageCount(Long orderId) {
Criteria criteria = getSession().createCriteria(ContainerUsage.class);
criteria.setProjection(Projections.property("id"));
criteria.add(Restrictions.eq("order.id", orderId));
return criteria.list().size();
}
}