ExportContainerRepositoryImpl.java

package com.tradecloud.repository.export.impl;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.CriteriaSpecification;
import org.hibernate.criterion.Order;
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 com.tradecloud.domain.export.Export;
import com.tradecloud.domain.export.ExportContainer;
import com.tradecloud.dto.export.ExportContainerSearch;
import com.tradecloud.repository.base.impl.RepositoryBaseImpl;
import com.tradecloud.repository.export.ExportContainerRepository;

@Repository(value = "exportContainerRepository")
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public class ExportContainerRepositoryImpl extends RepositoryBaseImpl<ExportContainer, ExportContainerSearch> implements ExportContainerRepository {

    private static final long serialVersionUID = 1L;
    private static final String CREATED = "created";
    private static final String EXPORT = "export";

    @Override
    public List<ExportContainer> findContainersByExport(Export export) {
        Criteria searchCriteria = getSession().createCriteria(ExportContainer.class);
        searchCriteria.add(Restrictions.eq(EXPORT, export));
        searchCriteria = searchCriteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
        searchCriteria.addOrder(Order.asc("created"));
        return searchCriteria.list();
    }
}