package com.insoul.copartner.dao.impl; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.persistence.Query; import org.springframework.stereotype.Repository; import com.insoul.copartner.dao.IUserFavouritesDao; import com.insoul.copartner.dao.criteria.FavouriteCriteria; import com.insoul.copartner.domain.UserFavourites; @Repository public class UserFavouritesDaoImpl extends BaseDaoImpl<UserFavourites, Long>implements IUserFavouritesDao { @Override public UserFavourites getByUserIdAndEntity(Long userId, Long entityId, String entityType) { Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("userId", userId); parameters.put("entityId", entityId); parameters.put("entityType", entityType); return queryOneByNamedQuery("UserFavourites.getByUserIdAndEntity", parameters); } @SuppressWarnings("unchecked") @Override public List<UserFavourites> findByUserId(FavouriteCriteria criteria) { StringBuilder conditionStr = new StringBuilder(); Map<String, Object> params = new HashMap<String, Object>(); conditionStr.append(" AND userId = :userId"); params.put("userId", criteria.getUserId()); if (null != criteria.getFrom()) { conditionStr.append(" AND created > :from"); params.put("from", criteria.getFrom()); } if (null != criteria.getTo()) { conditionStr.append(" AND created < :to"); params.put("to", criteria.getTo()); } Query query = null; StringBuilder hql = new StringBuilder(); hql.append("FROM UserFavourites WHERE 1=1").append(conditionStr).append(" ORDER BY created DESC"); query = createQuery(hql.toString(), params); if ((criteria.getLimit() != null) && (criteria.getLimit() != 0)) { query.setMaxResults(criteria.getLimit()); if (criteria.getOffset() != null) { query.setFirstResult(criteria.getOffset()); } } return query.getResultList(); } }