ProductGroupRepositoryImpl.java

package com.tradecloud.repository.hfc;

import org.hibernate.Criteria;
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.model.hfcmanagement.ProductGroup;
import com.tradecloud.repository.base.impl.RepositoryBaseImpl;

/**
 * Created by IntelliJ IDEA.
 * User: ds
 * Date: 2013/01/24
 * Time: 12:16 PM
 * To change this template use File | Settings | File Templates.
 */
@Repository(value = "productGroupRepository")
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public class ProductGroupRepositoryImpl extends RepositoryBaseImpl<ProductGroup, Object> implements ProductGroupRepository {

    @Override
    public ProductGroup findProductGroupByRef(String ref) {
        Criteria criteria = getSessionCustom().createCriteria(ProductGroup.class);
        criteria.add(Restrictions.like("reference", ref));
        criteria.addOrder(Order.desc("description"));

        return (ProductGroup) criteria.uniqueResult();
    }

    @Override
    public ProductGroup findProductGroupById(Long productId) {
        Criteria criteria = getSessionCustom().createCriteria(ProductGroup.class);
        criteria.createCriteria("products").add(Restrictions.eq("id", productId));
        criteria.addOrder(Order.desc("description"));

        return (ProductGroup) criteria.uniqueResult();
    }

}