CustomsDocumentRepositoryImpl.java
package com.tradecloud.repository.impl;
import com.tradecloud.domain.shipment.clearing.CustomsDocument;
import com.tradecloud.dto.clearing.CustomsDocumentSearch;
import com.tradecloud.repository.CustomsDocumentRepository;
import com.tradecloud.repository.base.impl.RepositoryBaseImpl;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.List;
@Repository
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public class CustomsDocumentRepositoryImpl extends RepositoryBaseImpl<CustomsDocument, CustomsDocumentSearch> implements CustomsDocumentRepository {
@Override
public List<CustomsDocument> search(CustomsDocumentSearch search) {
CriteriaBuilder criteriaBuilder = getSession().getCriteriaBuilder();
CriteriaQuery<CustomsDocument> criteriaQuery = criteriaBuilder.createQuery(CustomsDocument.class);
Root<CustomsDocument> c = criteriaQuery.from(CustomsDocument.class);
Predicate status = criteriaBuilder.equal(c.get("status"), search.getStatus());
Predicate uploadAttempts = criteriaBuilder.le(c.get("uploadAttempts"), search.getUploadAttempts());
org.hibernate.query.Query<CustomsDocument> q = getSession().createQuery(criteriaQuery.where(criteriaBuilder.and(status, uploadAttempts)));
return q.list();
}
}