From 4d71a8f3c2bca0ed51a1b628f8b07d56d032c720 Mon Sep 17 00:00:00 2001 From: Athou Date: Thu, 23 Apr 2015 08:55:47 +0200 Subject: [PATCH] rewrite query using not exists --- .../com/commafeed/backend/dao/FeedEntryContentDAO.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/commafeed/backend/dao/FeedEntryContentDAO.java b/src/main/java/com/commafeed/backend/dao/FeedEntryContentDAO.java index b0239132..5056e7f5 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedEntryContentDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedEntryContentDAO.java @@ -11,6 +11,7 @@ import com.commafeed.backend.model.FeedEntryContent; import com.commafeed.backend.model.QFeedEntry; import com.commafeed.backend.model.QFeedEntryContent; import com.google.common.collect.Iterables; +import com.mysema.query.jpa.hibernate.HibernateSubQuery; @Singleton public class FeedEntryContentDAO extends GenericDAO { @@ -30,8 +31,10 @@ public class FeedEntryContentDAO extends GenericDAO { public int deleteWithoutEntries(int max) { QFeedEntry entry = QFeedEntry.feedEntry; - List list = newQuery().from(content).leftJoin(content.entries, entry).where(entry.id.isNull()).limit(max) - .list(content); + + HibernateSubQuery subQuery = new HibernateSubQuery().from(entry).where(entry.content.id.eq(content.id)); + List list = newQuery().from(content).where(subQuery.notExists()).limit(max).list(content); + int deleted = list.size(); delete(list); return deleted;