diff --git a/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java b/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java index 5a101478..09de0880 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java @@ -42,8 +42,6 @@ public class FeedEntryStatusDAO extends GenericDAO { criteria.andEquals(FeedEntryStatus_.id.getName(), id); criteria.innerJoinFetch(FeedEntryStatus_.subscription.getName()); - criteria.innerJoinFetch(FeedEntryStatus_.entry.getName()); - criteria.andJoinEquals(FeedEntryStatus_.subscription.getName(), FeedSubscription_.user.getName(), user); @@ -69,9 +67,9 @@ public class FeedEntryStatusDAO extends GenericDAO { List predicates = Lists.newArrayList(); - Join subJoin = root.join( - FeedEntryStatus_.subscription, JoinType.LEFT); - subJoin.join(FeedSubscription_.category, JoinType.LEFT); + Join subJoin = (Join) root + .fetch(FeedEntryStatus_.subscription, JoinType.LEFT); + subJoin.fetch(FeedSubscription_.feed, JoinType.LEFT); Join entryJoin = (Join) root .fetch(FeedEntryStatus_.entry, JoinType.LEFT); @@ -107,9 +105,9 @@ public class FeedEntryStatusDAO extends GenericDAO { List predicates = Lists.newArrayList(); - Join subJoin = root.join( - FeedEntryStatus_.subscription, JoinType.LEFT); - subJoin.join(FeedSubscription_.category, JoinType.LEFT); + Join subJoin = (Join) root + .fetch(FeedEntryStatus_.subscription, JoinType.LEFT); + subJoin.fetch(FeedSubscription_.feed, JoinType.LEFT); Join entryJoin = (Join) root .fetch(FeedEntryStatus_.entry, JoinType.LEFT); @@ -141,9 +139,9 @@ public class FeedEntryStatusDAO extends GenericDAO { List predicates = Lists.newArrayList(); - Join subJoin = root.join( - FeedEntryStatus_.subscription, JoinType.LEFT); - subJoin.join(FeedSubscription_.category, JoinType.LEFT); + Join subJoin = (Join) root + .fetch(FeedEntryStatus_.subscription, JoinType.LEFT); + subJoin.fetch(FeedSubscription_.feed, JoinType.LEFT); Join entryJoin = (Join) root .fetch(FeedEntryStatus_.entry, JoinType.LEFT); @@ -196,9 +194,9 @@ public class FeedEntryStatusDAO extends GenericDAO { List predicates = Lists.newArrayList(); - Join subJoin = root.join( - FeedEntryStatus_.subscription, JoinType.LEFT); - subJoin.join(FeedSubscription_.category, JoinType.LEFT); + Join subJoin = (Join) root + .fetch(FeedEntryStatus_.subscription, JoinType.LEFT); + subJoin.fetch(FeedSubscription_.feed, JoinType.LEFT); Join entryJoin = (Join) root .fetch(FeedEntryStatus_.entry, JoinType.LEFT); @@ -240,9 +238,9 @@ public class FeedEntryStatusDAO extends GenericDAO { List predicates = Lists.newArrayList(); - Join subJoin = root.join( - FeedEntryStatus_.subscription, JoinType.LEFT); - subJoin.join(FeedSubscription_.category, JoinType.LEFT); + Join subJoin = (Join) root + .fetch(FeedEntryStatus_.subscription, JoinType.LEFT); + subJoin.fetch(FeedSubscription_.feed, JoinType.LEFT); Join entryJoin = (Join) root .fetch(FeedEntryStatus_.entry, JoinType.LEFT); diff --git a/src/main/java/com/commafeed/backend/dao/FeedSubscriptionDAO.java b/src/main/java/com/commafeed/backend/dao/FeedSubscriptionDAO.java index f9319083..21f98a4a 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedSubscriptionDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedSubscriptionDAO.java @@ -21,7 +21,6 @@ public class FeedSubscriptionDAO extends GenericDAO { criteria.andEquals(FeedSubscription_.user.getName(), user); criteria.andEquals(FeedSubscription_.id.getName(), id); criteria.leftJoinFetch(FeedSubscription_.feed.getName()); - criteria.leftJoinFetch(FeedSubscription_.user.getName()); criteria.leftJoinFetch(FeedSubscription_.category.getName()); return Iterables.getFirst(criteria.getResultList(), null); } @@ -44,7 +43,6 @@ public class FeedSubscriptionDAO extends GenericDAO { criteria.andEquals(FeedSubscription_.user.getName(), user); criteria.innerJoinFetch(FeedSubscription_.feed.getName()); - criteria.innerJoinFetch(FeedSubscription_.user.getName()); criteria.leftJoinFetch(FeedSubscription_.category.getName()); return criteria.getResultList(); } diff --git a/src/main/java/com/commafeed/backend/dao/UserRoleDAO.java b/src/main/java/com/commafeed/backend/dao/UserRoleDAO.java index 2f6416ee..8092675c 100644 --- a/src/main/java/com/commafeed/backend/dao/UserRoleDAO.java +++ b/src/main/java/com/commafeed/backend/dao/UserRoleDAO.java @@ -10,10 +10,20 @@ import com.commafeed.backend.model.UserRole; import com.commafeed.backend.model.UserRole.Role; import com.commafeed.backend.model.UserRole_; import com.google.common.collect.Sets; +import com.uaihebert.factory.EasyCriteriaFactory; +import com.uaihebert.model.EasyCriteria; @Stateless public class UserRoleDAO extends GenericDAO { + @Override + public List findAll() { + EasyCriteria criteria = EasyCriteriaFactory + .createQueryCriteria(em, getType()); + criteria.leftJoinFetch(UserRole_.user.getName()); + return criteria.getResultList(); + } + public List findAll(User user) { return findByField(UserRole_.user, user); } diff --git a/src/main/java/com/commafeed/backend/model/FeedCategory.java b/src/main/java/com/commafeed/backend/model/FeedCategory.java index e6bca674..230f83c1 100644 --- a/src/main/java/com/commafeed/backend/model/FeedCategory.java +++ b/src/main/java/com/commafeed/backend/model/FeedCategory.java @@ -4,6 +4,7 @@ import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; @@ -19,11 +20,11 @@ public class FeedCategory extends AbstractModel { @Column(length = 128, nullable = false) private String name; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(nullable = false) private User user; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) private FeedCategory parent; @OneToMany(mappedBy = "parent") diff --git a/src/main/java/com/commafeed/backend/model/FeedEntryStatus.java b/src/main/java/com/commafeed/backend/model/FeedEntryStatus.java index de09f162..5cd543fc 100644 --- a/src/main/java/com/commafeed/backend/model/FeedEntryStatus.java +++ b/src/main/java/com/commafeed/backend/model/FeedEntryStatus.java @@ -2,6 +2,7 @@ package com.commafeed.backend.model; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; @@ -11,11 +12,11 @@ import javax.persistence.Table; @SuppressWarnings("serial") public class FeedEntryStatus extends AbstractModel { - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(nullable = false) private FeedSubscription subscription; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(nullable = false) private FeedEntry entry; diff --git a/src/main/java/com/commafeed/backend/model/FeedSubscription.java b/src/main/java/com/commafeed/backend/model/FeedSubscription.java index e311f7ce..2917085c 100644 --- a/src/main/java/com/commafeed/backend/model/FeedSubscription.java +++ b/src/main/java/com/commafeed/backend/model/FeedSubscription.java @@ -5,6 +5,7 @@ import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; @@ -15,18 +16,18 @@ import javax.persistence.Table; @SuppressWarnings("serial") public class FeedSubscription extends AbstractModel { - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(nullable = false) private User user; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(nullable = false) private Feed feed; @Column(length = 128, nullable = false) private String title; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) private FeedCategory category; @OneToMany(mappedBy = "subscription", cascade = CascadeType.REMOVE) diff --git a/src/main/java/com/commafeed/backend/model/UserRole.java b/src/main/java/com/commafeed/backend/model/UserRole.java index e8b342b1..fb9537d2 100644 --- a/src/main/java/com/commafeed/backend/model/UserRole.java +++ b/src/main/java/com/commafeed/backend/model/UserRole.java @@ -4,6 +4,7 @@ import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; +import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.OneToOne; import javax.persistence.Table; @@ -17,7 +18,7 @@ public class UserRole extends AbstractModel { USER, ADMIN, NONE } - @OneToOne + @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id", nullable = false) private User user; diff --git a/src/main/java/com/commafeed/backend/model/UserSettings.java b/src/main/java/com/commafeed/backend/model/UserSettings.java index 1faf4358..7cc4aea9 100644 --- a/src/main/java/com/commafeed/backend/model/UserSettings.java +++ b/src/main/java/com/commafeed/backend/model/UserSettings.java @@ -4,6 +4,7 @@ import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; +import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.Lob; import javax.persistence.OneToOne; @@ -26,7 +27,7 @@ public class UserSettings extends AbstractModel { title, expanded } - @OneToOne + @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id", nullable = false) private User user; diff --git a/src/main/resources/META-INF/orm.xml b/src/main/resources/META-INF/orm.xml index 8959c942..328169fc 100644 --- a/src/main/resources/META-INF/orm.xml +++ b/src/main/resources/META-INF/orm.xml @@ -6,7 +6,7 @@ http://java.sun.com/xml/ns/persistence/orm_2_0.xsd"> - select s.subscription.id, count(s) from FeedEntryStatus s where s.subscription.user=:user and s.read=false group by s.subscription.id + select sub.id, count(s) from FeedEntryStatus s LEFT JOIN s.subscription sub where sub.user=:user and s.read=false group by sub.id \ No newline at end of file