TradeAgreementRepositoryImpl.java

package com.tradecloud.repository.impl;

import com.tradecloud.domain.configuration.TradeAgreements;
import com.tradecloud.domain.duties.TradeAgreement;
import com.tradecloud.domain.place.Country;
import com.tradecloud.repository.TradeAgreementRepository;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * Created by ds on 2015/07/22.
 */
@Repository(value = "tradeAgreementRepository")
public class TradeAgreementRepositoryImpl extends RepositoryBaseImplNoSearch<TradeAgreements> implements TradeAgreementRepository {

    @Override
    public List<TradeAgreements> findTradeAgreements(TradeAgreement tradeAgreement) {
        Criteria searchCriteria = getSessionCustom().createCriteria(TradeAgreements.class);
        searchCriteria.add(Restrictions.eq("tradeAgreement", tradeAgreement));
        @SuppressWarnings("unchecked") List<TradeAgreements> results = searchCriteria.list();
        return results;
    }

    @Override
    public List<TradeAgreements> findByCountry(Country countryOfOrigin) {
        String tradeHql = "Select ta from TradeAgreements ta inner join ta.countries c where c.code=:countrycode";
        Query query = getSession().createQuery(tradeHql);
        query.setParameter("countrycode", countryOfOrigin.getCode());
        return query.list();
    }

    @Override
    public List<TradeAgreements> getAllTradeAgreements() {
        String tradeHql = "Select ta from TradeAgreements ta order by ta.id desc";
        Query query = getSession().createQuery(tradeHql);
        return query.list();
    }
}