From cebeef04a0d15f31a95ffbf253fea13b239ec737 Mon Sep 17 00:00:00 2001 From: Athou Date: Mon, 30 Mar 2015 11:31:58 +0200 Subject: [PATCH] remove one to many relationships --- src/main/java/com/commafeed/backend/dao/FeedDAO.java | 10 +++++++--- src/main/java/com/commafeed/backend/model/Feed.java | 9 --------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/commafeed/backend/dao/FeedDAO.java b/src/main/java/com/commafeed/backend/dao/FeedDAO.java index bd1ebeb8..9a4e2795 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedDAO.java @@ -17,6 +17,7 @@ import com.commafeed.backend.model.QUser; import com.google.common.collect.Iterables; import com.mysema.query.BooleanBuilder; import com.mysema.query.jpa.hibernate.HibernateQuery; +import com.mysema.query.jpa.hibernate.HibernateSubQuery; @Singleton public class FeedDAO extends GenericDAO { @@ -33,12 +34,14 @@ public class FeedDAO extends GenericDAO { disabledDatePredicate.or(feed.disabledUntil.isNull()); disabledDatePredicate.or(feed.disabledUntil.lt(new Date())); - HibernateQuery query = newQuery().from(feed); + HibernateQuery query = null; if (lastLoginThreshold != null) { QFeedSubscription subs = QFeedSubscription.feedSubscription; QUser user = QUser.user; - query.join(feed.subscriptions, subs).join(subs.user, user).where(disabledDatePredicate, user.lastLogin.gt(lastLoginThreshold)); + query = newQuery().from(subs); + query.join(subs.feed, feed).join(subs.user, user).where(disabledDatePredicate, user.lastLogin.gt(lastLoginThreshold)); } else { + query = newQuery().from(feed); query.where(disabledDatePredicate); } @@ -60,6 +63,7 @@ public class FeedDAO extends GenericDAO { public List findWithoutSubscriptions(int max) { QFeedSubscription sub = QFeedSubscription.feedSubscription; - return newQuery().from(feed).leftJoin(feed.subscriptions, sub).where(sub.id.isNull()).limit(max).list(feed); + return newQuery().from(feed).where(new HibernateSubQuery().from(sub).where(sub.feed.eq(feed)).notExists()).limit(max).list(feed); + // return newQuery().from(feed).leftJoin(feed.subscriptions, sub).where(sub.id.isNull()).limit(max).list(feed); } } diff --git a/src/main/java/com/commafeed/backend/model/Feed.java b/src/main/java/com/commafeed/backend/model/Feed.java index 8c15a670..9ac4e736 100644 --- a/src/main/java/com/commafeed/backend/model/Feed.java +++ b/src/main/java/com/commafeed/backend/model/Feed.java @@ -1,12 +1,9 @@ package com.commafeed.backend.model; import java.util.Date; -import java.util.Set; -import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; -import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; @@ -103,12 +100,6 @@ public class Feed extends AbstractModel { @Column(length = 40) private String lastContentHash; - @OneToMany(mappedBy = "feed", cascade = CascadeType.REMOVE) - private Set entries; - - @OneToMany(mappedBy = "feed") - private Set subscriptions; - /** * detected hub for pubsubhubbub */