diff --git a/src/main/java/com/commafeed/backend/dao/FeedEntryService.java b/src/main/java/com/commafeed/backend/dao/FeedEntryService.java index 6af7c4f4..9b3659f5 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedEntryService.java +++ b/src/main/java/com/commafeed/backend/dao/FeedEntryService.java @@ -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 { } public List getByGuids(List guids) { - TypedQuery query = em.createNamedQuery("Entry.byGuids", - FeedEntry.class); - query.setParameter("guids", guids); - return query.getResultList(); + EasyCriteria criteria = createCriteria(); + criteria.setDistinctTrue(); + criteria.andStringIn(MF.i(proxy().getGuid()), guids); + criteria.leftJoinFetch(MF.i(proxy().getFeeds())); + return criteria.getResultList(); } } diff --git a/src/main/java/com/commafeed/backend/dao/FeedEntryStatusService.java b/src/main/java/com/commafeed/backend/dao/FeedEntryStatusService.java index cf7d407a..9279e3bd 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedEntryStatusService.java +++ b/src/main/java/com/commafeed/backend/dao/FeedEntryStatusService.java @@ -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 { FeedCategoryService feedCategoryService; public FeedEntryStatus findById(User user, Long id) { - TypedQuery query = em.createNamedQuery( - "EntryStatus.byId", FeedEntryStatus.class); - query.setParameter("user", user); - query.setParameter("id", id); + + EasyCriteria 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; } diff --git a/src/main/resources/META-INF/orm.xml b/src/main/resources/META-INF/orm.xml index 4ef8ea9d..1a9c0353 100644 --- a/src/main/resources/META-INF/orm.xml +++ b/src/main/resources/META-INF/orm.xml @@ -9,10 +9,6 @@ select u FROM User u WHERE lower(u.name)=:name - - select DISTINCT e from FeedEntry e JOIN FETCH e.feeds where e.guid in (:guids) - - select s from FeedEntryStatus s where s.subscription.user=:user and s.id=:id