use less joins

This commit is contained in:
Athou
2013-07-12 15:42:07 +02:00
parent 6588b510a0
commit 73b757a4ac

View File

@@ -16,6 +16,7 @@ import javax.persistence.criteria.Path;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root; import javax.persistence.criteria.Root;
import javax.persistence.criteria.Selection; import javax.persistence.criteria.Selection;
import javax.persistence.criteria.SetJoin;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
@@ -318,14 +319,12 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
CriteriaQuery<FeedEntry> query = builder.createQuery(FeedEntry.class); CriteriaQuery<FeedEntry> query = builder.createQuery(FeedEntry.class);
Root<FeedEntry> root = query.from(FeedEntry.class); Root<FeedEntry> root = query.from(FeedEntry.class);
Join<FeedFeedEntry, Feed> feedJoin = root.join(FeedEntry_.feedRelationships).join(FeedFeedEntry_.feed); Join<FeedEntry, FeedFeedEntry> ffeJoin = root.join(FeedEntry_.feedRelationships);
Join<Feed, FeedSubscription> subJoin = feedJoin
.join(Feed_.subscriptions);
List<Predicate> predicates = Lists.newArrayList(); List<Predicate> predicates = Lists.newArrayList();
predicates.add(builder.equal(subJoin.get(FeedSubscription_.id), predicates.add(builder.equal(ffeJoin.get(FeedFeedEntry_.feed),
subscription.getId())); subscription.getFeed()));
if (newerThan != null) { if (newerThan != null) {
predicates.add(builder.greaterThanOrEqualTo( predicates.add(builder.greaterThanOrEqualTo(