smarter join

This commit is contained in:
Athou
2014-08-12 16:32:03 +02:00
parent 7a21e9816c
commit 982cf044ef

View File

@@ -45,13 +45,13 @@ public class FeedDAO extends GenericDAO<Feed> {
disabledDatePredicate.or(feed.disabledUntil.isNull()); disabledDatePredicate.or(feed.disabledUntil.isNull());
disabledDatePredicate.or(feed.disabledUntil.lt(new Date())); disabledDatePredicate.or(feed.disabledUntil.lt(new Date()));
HibernateQuery query = newQuery().from(feed).where(disabledDatePredicate); HibernateQuery query = newQuery().from(feed);
if (lastLoginThreshold != null) { if (lastLoginThreshold != null) {
QFeedSubscription sub = QFeedSubscription.feedSubscription; QFeedSubscription subs = QFeedSubscription.feedSubscription;
QUser user = QUser.user; QUser user = QUser.user;
HibernateSubQuery subquery = new HibernateSubQuery(); query.join(feed.subscriptions, subs).join(subs.user, user).where(disabledDatePredicate, user.lastLogin.gt(lastLoginThreshold));
subquery.from(sub).join(sub.user, user).where(sub.feed.eq(feed), user.lastLogin.gt(lastLoginThreshold)); } else {
query.where(subquery.exists()); query.where(disabledDatePredicate);
} }
return query.orderBy(feed.disabledUntil.asc()).limit(count).list(feed); return query.orderBy(feed.disabledUntil.asc()).limit(count).list(feed);