use criteria api where possible

This commit is contained in:
Athou
2013-04-08 14:28:31 +02:00
parent cf7d4cce9c
commit aa592e54b2
3 changed files with 20 additions and 14 deletions

View File

@@ -6,7 +6,6 @@ import java.util.List;
import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.persistence.TypedQuery;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
@@ -15,7 +14,9 @@ import com.commafeed.backend.model.Feed;
import com.commafeed.backend.model.FeedEntry;
import com.commafeed.backend.model.FeedEntryStatus;
import com.commafeed.backend.model.FeedSubscription;
import com.commafeed.frontend.utils.ModelFactory.MF;
import com.google.common.collect.Lists;
import com.uaihebert.model.EasyCriteria;
@Stateless
@SuppressWarnings("serial")
@@ -81,10 +82,11 @@ public class FeedEntryService extends GenericDAO<FeedEntry> {
}
public List<FeedEntry> getByGuids(List<String> guids) {
TypedQuery<FeedEntry> query = em.createNamedQuery("Entry.byGuids",
FeedEntry.class);
query.setParameter("guids", guids);
return query.getResultList();
EasyCriteria<FeedEntry> criteria = createCriteria();
criteria.setDistinctTrue();
criteria.andStringIn(MF.i(proxy().getGuid()), guids);
criteria.leftJoinFetch(MF.i(proxy().getFeeds()));
return criteria.getResultList();
}
}

View File

@@ -14,9 +14,12 @@ import org.apache.commons.lang.StringUtils;
import com.commafeed.backend.model.Feed;
import com.commafeed.backend.model.FeedCategory;
import com.commafeed.backend.model.FeedEntryStatus;
import com.commafeed.backend.model.FeedSubscription;
import com.commafeed.backend.model.User;
import com.commafeed.frontend.utils.ModelFactory.MF;
import com.google.api.client.util.Lists;
import com.google.api.client.util.Maps;
import com.uaihebert.model.EasyCriteria;
@Stateless
@SuppressWarnings("serial")
@@ -26,14 +29,19 @@ public class FeedEntryStatusService extends GenericDAO<FeedEntryStatus> {
FeedCategoryService feedCategoryService;
public FeedEntryStatus findById(User user, Long id) {
TypedQuery<FeedEntryStatus> query = em.createNamedQuery(
"EntryStatus.byId", FeedEntryStatus.class);
query.setParameter("user", user);
query.setParameter("id", id);
EasyCriteria<FeedEntryStatus> criteria = createCriteria();
criteria.andEquals(MF.i(proxy().getId()), id);
criteria.innerJoinFetch(MF.i(proxy().getSubscription()));
criteria.innerJoinFetch(MF.i(proxy().getEntry()));
criteria.andJoinEquals(MF.i(proxy().getSubscription()),
MF.i(MF.p(FeedSubscription.class).getUser()), user);
FeedEntryStatus status = null;
try {
status = query.getSingleResult();
status = criteria.getSingleResult();
} catch (NoResultException e) {
status = null;
}