forked from Archives/Athou_commafeed
lazy loading everywhere
This commit is contained in:
@@ -42,8 +42,6 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
|||||||
criteria.andEquals(FeedEntryStatus_.id.getName(), id);
|
criteria.andEquals(FeedEntryStatus_.id.getName(), id);
|
||||||
|
|
||||||
criteria.innerJoinFetch(FeedEntryStatus_.subscription.getName());
|
criteria.innerJoinFetch(FeedEntryStatus_.subscription.getName());
|
||||||
criteria.innerJoinFetch(FeedEntryStatus_.entry.getName());
|
|
||||||
|
|
||||||
criteria.andJoinEquals(FeedEntryStatus_.subscription.getName(),
|
criteria.andJoinEquals(FeedEntryStatus_.subscription.getName(),
|
||||||
FeedSubscription_.user.getName(), user);
|
FeedSubscription_.user.getName(), user);
|
||||||
|
|
||||||
@@ -69,9 +67,9 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
|||||||
|
|
||||||
List<Predicate> predicates = Lists.newArrayList();
|
List<Predicate> predicates = Lists.newArrayList();
|
||||||
|
|
||||||
Join<FeedEntryStatus, FeedSubscription> subJoin = root.join(
|
Join<FeedEntryStatus, FeedSubscription> subJoin = (Join<FeedEntryStatus, FeedSubscription>) root
|
||||||
FeedEntryStatus_.subscription, JoinType.LEFT);
|
.fetch(FeedEntryStatus_.subscription, JoinType.LEFT);
|
||||||
subJoin.join(FeedSubscription_.category, JoinType.LEFT);
|
subJoin.fetch(FeedSubscription_.feed, JoinType.LEFT);
|
||||||
|
|
||||||
Join<FeedEntryStatus, FeedEntry> entryJoin = (Join<FeedEntryStatus, FeedEntry>) root
|
Join<FeedEntryStatus, FeedEntry> entryJoin = (Join<FeedEntryStatus, FeedEntry>) root
|
||||||
.fetch(FeedEntryStatus_.entry, JoinType.LEFT);
|
.fetch(FeedEntryStatus_.entry, JoinType.LEFT);
|
||||||
@@ -107,9 +105,9 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
|||||||
|
|
||||||
List<Predicate> predicates = Lists.newArrayList();
|
List<Predicate> predicates = Lists.newArrayList();
|
||||||
|
|
||||||
Join<FeedEntryStatus, FeedSubscription> subJoin = root.join(
|
Join<FeedEntryStatus, FeedSubscription> subJoin = (Join<FeedEntryStatus, FeedSubscription>) root
|
||||||
FeedEntryStatus_.subscription, JoinType.LEFT);
|
.fetch(FeedEntryStatus_.subscription, JoinType.LEFT);
|
||||||
subJoin.join(FeedSubscription_.category, JoinType.LEFT);
|
subJoin.fetch(FeedSubscription_.feed, JoinType.LEFT);
|
||||||
Join<FeedEntryStatus, FeedEntry> entryJoin = (Join<FeedEntryStatus, FeedEntry>) root
|
Join<FeedEntryStatus, FeedEntry> entryJoin = (Join<FeedEntryStatus, FeedEntry>) root
|
||||||
.fetch(FeedEntryStatus_.entry, JoinType.LEFT);
|
.fetch(FeedEntryStatus_.entry, JoinType.LEFT);
|
||||||
|
|
||||||
@@ -141,9 +139,9 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
|||||||
|
|
||||||
List<Predicate> predicates = Lists.newArrayList();
|
List<Predicate> predicates = Lists.newArrayList();
|
||||||
|
|
||||||
Join<FeedEntryStatus, FeedSubscription> subJoin = root.join(
|
Join<FeedEntryStatus, FeedSubscription> subJoin = (Join<FeedEntryStatus, FeedSubscription>) root
|
||||||
FeedEntryStatus_.subscription, JoinType.LEFT);
|
.fetch(FeedEntryStatus_.subscription, JoinType.LEFT);
|
||||||
subJoin.join(FeedSubscription_.category, JoinType.LEFT);
|
subJoin.fetch(FeedSubscription_.feed, JoinType.LEFT);
|
||||||
Join<FeedEntryStatus, FeedEntry> entryJoin = (Join<FeedEntryStatus, FeedEntry>) root
|
Join<FeedEntryStatus, FeedEntry> entryJoin = (Join<FeedEntryStatus, FeedEntry>) root
|
||||||
.fetch(FeedEntryStatus_.entry, JoinType.LEFT);
|
.fetch(FeedEntryStatus_.entry, JoinType.LEFT);
|
||||||
|
|
||||||
@@ -196,9 +194,9 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
|||||||
|
|
||||||
List<Predicate> predicates = Lists.newArrayList();
|
List<Predicate> predicates = Lists.newArrayList();
|
||||||
|
|
||||||
Join<FeedEntryStatus, FeedSubscription> subJoin = root.join(
|
Join<FeedEntryStatus, FeedSubscription> subJoin = (Join<FeedEntryStatus, FeedSubscription>) root
|
||||||
FeedEntryStatus_.subscription, JoinType.LEFT);
|
.fetch(FeedEntryStatus_.subscription, JoinType.LEFT);
|
||||||
subJoin.join(FeedSubscription_.category, JoinType.LEFT);
|
subJoin.fetch(FeedSubscription_.feed, JoinType.LEFT);
|
||||||
Join<FeedEntryStatus, FeedEntry> entryJoin = (Join<FeedEntryStatus, FeedEntry>) root
|
Join<FeedEntryStatus, FeedEntry> entryJoin = (Join<FeedEntryStatus, FeedEntry>) root
|
||||||
.fetch(FeedEntryStatus_.entry, JoinType.LEFT);
|
.fetch(FeedEntryStatus_.entry, JoinType.LEFT);
|
||||||
|
|
||||||
@@ -240,9 +238,9 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
|||||||
|
|
||||||
List<Predicate> predicates = Lists.newArrayList();
|
List<Predicate> predicates = Lists.newArrayList();
|
||||||
|
|
||||||
Join<FeedEntryStatus, FeedSubscription> subJoin = root.join(
|
Join<FeedEntryStatus, FeedSubscription> subJoin = (Join<FeedEntryStatus, FeedSubscription>) root
|
||||||
FeedEntryStatus_.subscription, JoinType.LEFT);
|
.fetch(FeedEntryStatus_.subscription, JoinType.LEFT);
|
||||||
subJoin.join(FeedSubscription_.category, JoinType.LEFT);
|
subJoin.fetch(FeedSubscription_.feed, JoinType.LEFT);
|
||||||
Join<FeedEntryStatus, FeedEntry> entryJoin = (Join<FeedEntryStatus, FeedEntry>) root
|
Join<FeedEntryStatus, FeedEntry> entryJoin = (Join<FeedEntryStatus, FeedEntry>) root
|
||||||
.fetch(FeedEntryStatus_.entry, JoinType.LEFT);
|
.fetch(FeedEntryStatus_.entry, JoinType.LEFT);
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ public class FeedSubscriptionDAO extends GenericDAO<FeedSubscription> {
|
|||||||
criteria.andEquals(FeedSubscription_.user.getName(), user);
|
criteria.andEquals(FeedSubscription_.user.getName(), user);
|
||||||
criteria.andEquals(FeedSubscription_.id.getName(), id);
|
criteria.andEquals(FeedSubscription_.id.getName(), id);
|
||||||
criteria.leftJoinFetch(FeedSubscription_.feed.getName());
|
criteria.leftJoinFetch(FeedSubscription_.feed.getName());
|
||||||
criteria.leftJoinFetch(FeedSubscription_.user.getName());
|
|
||||||
criteria.leftJoinFetch(FeedSubscription_.category.getName());
|
criteria.leftJoinFetch(FeedSubscription_.category.getName());
|
||||||
return Iterables.getFirst(criteria.getResultList(), null);
|
return Iterables.getFirst(criteria.getResultList(), null);
|
||||||
}
|
}
|
||||||
@@ -44,7 +43,6 @@ public class FeedSubscriptionDAO extends GenericDAO<FeedSubscription> {
|
|||||||
criteria.andEquals(FeedSubscription_.user.getName(), user);
|
criteria.andEquals(FeedSubscription_.user.getName(), user);
|
||||||
|
|
||||||
criteria.innerJoinFetch(FeedSubscription_.feed.getName());
|
criteria.innerJoinFetch(FeedSubscription_.feed.getName());
|
||||||
criteria.innerJoinFetch(FeedSubscription_.user.getName());
|
|
||||||
criteria.leftJoinFetch(FeedSubscription_.category.getName());
|
criteria.leftJoinFetch(FeedSubscription_.category.getName());
|
||||||
return criteria.getResultList();
|
return criteria.getResultList();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,10 +10,20 @@ import com.commafeed.backend.model.UserRole;
|
|||||||
import com.commafeed.backend.model.UserRole.Role;
|
import com.commafeed.backend.model.UserRole.Role;
|
||||||
import com.commafeed.backend.model.UserRole_;
|
import com.commafeed.backend.model.UserRole_;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
|
import com.uaihebert.factory.EasyCriteriaFactory;
|
||||||
|
import com.uaihebert.model.EasyCriteria;
|
||||||
|
|
||||||
@Stateless
|
@Stateless
|
||||||
public class UserRoleDAO extends GenericDAO<UserRole> {
|
public class UserRoleDAO extends GenericDAO<UserRole> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<UserRole> findAll() {
|
||||||
|
EasyCriteria<UserRole> criteria = EasyCriteriaFactory
|
||||||
|
.createQueryCriteria(em, getType());
|
||||||
|
criteria.leftJoinFetch(UserRole_.user.getName());
|
||||||
|
return criteria.getResultList();
|
||||||
|
}
|
||||||
|
|
||||||
public List<UserRole> findAll(User user) {
|
public List<UserRole> findAll(User user) {
|
||||||
return findByField(UserRole_.user, user);
|
return findByField(UserRole_.user, user);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import java.util.Set;
|
|||||||
|
|
||||||
import javax.persistence.Column;
|
import javax.persistence.Column;
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.FetchType;
|
||||||
import javax.persistence.JoinColumn;
|
import javax.persistence.JoinColumn;
|
||||||
import javax.persistence.ManyToOne;
|
import javax.persistence.ManyToOne;
|
||||||
import javax.persistence.OneToMany;
|
import javax.persistence.OneToMany;
|
||||||
@@ -19,11 +20,11 @@ public class FeedCategory extends AbstractModel {
|
|||||||
@Column(length = 128, nullable = false)
|
@Column(length = 128, nullable = false)
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(nullable = false)
|
@JoinColumn(nullable = false)
|
||||||
private User user;
|
private User user;
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
private FeedCategory parent;
|
private FeedCategory parent;
|
||||||
|
|
||||||
@OneToMany(mappedBy = "parent")
|
@OneToMany(mappedBy = "parent")
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.commafeed.backend.model;
|
|||||||
|
|
||||||
import javax.persistence.Column;
|
import javax.persistence.Column;
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.FetchType;
|
||||||
import javax.persistence.JoinColumn;
|
import javax.persistence.JoinColumn;
|
||||||
import javax.persistence.ManyToOne;
|
import javax.persistence.ManyToOne;
|
||||||
import javax.persistence.Table;
|
import javax.persistence.Table;
|
||||||
@@ -11,11 +12,11 @@ import javax.persistence.Table;
|
|||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public class FeedEntryStatus extends AbstractModel {
|
public class FeedEntryStatus extends AbstractModel {
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(nullable = false)
|
@JoinColumn(nullable = false)
|
||||||
private FeedSubscription subscription;
|
private FeedSubscription subscription;
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(nullable = false)
|
@JoinColumn(nullable = false)
|
||||||
private FeedEntry entry;
|
private FeedEntry entry;
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import java.util.Set;
|
|||||||
import javax.persistence.CascadeType;
|
import javax.persistence.CascadeType;
|
||||||
import javax.persistence.Column;
|
import javax.persistence.Column;
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.FetchType;
|
||||||
import javax.persistence.JoinColumn;
|
import javax.persistence.JoinColumn;
|
||||||
import javax.persistence.ManyToOne;
|
import javax.persistence.ManyToOne;
|
||||||
import javax.persistence.OneToMany;
|
import javax.persistence.OneToMany;
|
||||||
@@ -15,18 +16,18 @@ import javax.persistence.Table;
|
|||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public class FeedSubscription extends AbstractModel {
|
public class FeedSubscription extends AbstractModel {
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(nullable = false)
|
@JoinColumn(nullable = false)
|
||||||
private User user;
|
private User user;
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(nullable = false)
|
@JoinColumn(nullable = false)
|
||||||
private Feed feed;
|
private Feed feed;
|
||||||
|
|
||||||
@Column(length = 128, nullable = false)
|
@Column(length = 128, nullable = false)
|
||||||
private String title;
|
private String title;
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
private FeedCategory category;
|
private FeedCategory category;
|
||||||
|
|
||||||
@OneToMany(mappedBy = "subscription", cascade = CascadeType.REMOVE)
|
@OneToMany(mappedBy = "subscription", cascade = CascadeType.REMOVE)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import javax.persistence.Column;
|
|||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
import javax.persistence.EnumType;
|
import javax.persistence.EnumType;
|
||||||
import javax.persistence.Enumerated;
|
import javax.persistence.Enumerated;
|
||||||
|
import javax.persistence.FetchType;
|
||||||
import javax.persistence.JoinColumn;
|
import javax.persistence.JoinColumn;
|
||||||
import javax.persistence.OneToOne;
|
import javax.persistence.OneToOne;
|
||||||
import javax.persistence.Table;
|
import javax.persistence.Table;
|
||||||
@@ -17,7 +18,7 @@ public class UserRole extends AbstractModel {
|
|||||||
USER, ADMIN, NONE
|
USER, ADMIN, NONE
|
||||||
}
|
}
|
||||||
|
|
||||||
@OneToOne
|
@OneToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(name = "user_id", nullable = false)
|
@JoinColumn(name = "user_id", nullable = false)
|
||||||
private User user;
|
private User user;
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import javax.persistence.Column;
|
|||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
import javax.persistence.EnumType;
|
import javax.persistence.EnumType;
|
||||||
import javax.persistence.Enumerated;
|
import javax.persistence.Enumerated;
|
||||||
|
import javax.persistence.FetchType;
|
||||||
import javax.persistence.JoinColumn;
|
import javax.persistence.JoinColumn;
|
||||||
import javax.persistence.Lob;
|
import javax.persistence.Lob;
|
||||||
import javax.persistence.OneToOne;
|
import javax.persistence.OneToOne;
|
||||||
@@ -26,7 +27,7 @@ public class UserSettings extends AbstractModel {
|
|||||||
title, expanded
|
title, expanded
|
||||||
}
|
}
|
||||||
|
|
||||||
@OneToOne
|
@OneToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(name = "user_id", nullable = false)
|
@JoinColumn(name = "user_id", nullable = false)
|
||||||
private User user;
|
private User user;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
http://java.sun.com/xml/ns/persistence/orm_2_0.xsd">
|
http://java.sun.com/xml/ns/persistence/orm_2_0.xsd">
|
||||||
|
|
||||||
<named-query name="EntryStatus.unreadCounts">
|
<named-query name="EntryStatus.unreadCounts">
|
||||||
<query>select s.subscription.id, count(s) from FeedEntryStatus s where s.subscription.user=:user and s.read=false group by s.subscription.id</query>
|
<query>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</query>
|
||||||
</named-query>
|
</named-query>
|
||||||
|
|
||||||
</entity-mappings>
|
</entity-mappings>
|
||||||
Reference in New Issue
Block a user