diff --git a/src/main/java/com/commafeed/backend/dao/FeedEntryDAO.java b/src/main/java/com/commafeed/backend/dao/FeedEntryDAO.java index 2b5586d0..b84b9301 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedEntryDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedEntryDAO.java @@ -10,6 +10,7 @@ import javax.persistence.criteria.Root; import javax.persistence.criteria.SetJoin; import org.apache.commons.codec.digest.DigestUtils; +import org.hibernate.Hibernate; import com.commafeed.backend.model.Feed; import com.commafeed.backend.model.FeedEntry; @@ -25,12 +26,16 @@ public class FeedEntryDAO extends GenericDAO { CriteriaQuery query = builder.createQuery(getType()); Root root = query.from(getType()); - + query.distinct(true); query.where(builder.equal(root.get(FeedEntry_.guidHash), hash)); - root.fetch(FeedEntry_.feeds, JoinType.LEFT); + TypedQuery q = em.createQuery(query); - return q.getResultList(); + List list = q.getResultList(); + for (FeedEntry entry : list) { + Hibernate.initialize(entry.getFeeds()); + } + return list; } public List findByGuids(List guids) { @@ -41,19 +46,24 @@ public class FeedEntryDAO extends GenericDAO { CriteriaQuery query = builder.createQuery(getType()); Root root = query.from(getType()); - + query.distinct(true); query.where(root.get(FeedEntry_.guidHash).in(hashes)); root.fetch(FeedEntry_.feeds, JoinType.LEFT); + TypedQuery q = em.createQuery(query); - return q.getResultList(); + List list = q.getResultList(); + for (FeedEntry entry : list) { + Hibernate.initialize(entry.getFeeds()); + } + return list; } public List findByFeed(Feed feed, int offset, int limit) { CriteriaQuery query = builder.createQuery(getType()); Root root = query.from(getType()); SetJoin feedsJoin = root.join(FeedEntry_.feeds); - + query.distinct(true); query.where(builder.equal(feedsJoin.get(Feed_.id), feed.getId())); query.orderBy(builder.desc(root.get(FeedEntry_.updated)));