forked from Archives/Athou_commafeed
use distinct for joins and fetches over one to many relationships
This commit is contained in:
@@ -25,6 +25,8 @@ public class FeedEntryDAO extends GenericDAO<FeedEntry> {
|
||||
|
||||
CriteriaQuery<FeedEntry> query = builder.createQuery(getType());
|
||||
Root<FeedEntry> root = query.from(getType());
|
||||
|
||||
query.distinct(true);
|
||||
query.where(builder.equal(root.get(FeedEntry_.guidHash), hash));
|
||||
root.fetch(FeedEntry_.feeds, JoinType.LEFT);
|
||||
TypedQuery<FeedEntry> q = em.createQuery(query);
|
||||
@@ -39,6 +41,8 @@ public class FeedEntryDAO extends GenericDAO<FeedEntry> {
|
||||
|
||||
CriteriaQuery<FeedEntry> query = builder.createQuery(getType());
|
||||
Root<FeedEntry> root = query.from(getType());
|
||||
|
||||
query.distinct(true);
|
||||
query.where(root.get(FeedEntry_.guidHash).in(hashes));
|
||||
root.fetch(FeedEntry_.feeds, JoinType.LEFT);
|
||||
TypedQuery<FeedEntry> q = em.createQuery(query);
|
||||
@@ -49,6 +53,8 @@ public class FeedEntryDAO extends GenericDAO<FeedEntry> {
|
||||
CriteriaQuery<FeedEntry> query = builder.createQuery(getType());
|
||||
Root<FeedEntry> root = query.from(getType());
|
||||
SetJoin<FeedEntry, Feed> 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)));
|
||||
TypedQuery<FeedEntry> q = em.createQuery(query);
|
||||
|
||||
@@ -20,6 +20,7 @@ public class UserRoleDAO extends GenericDAO<UserRole> {
|
||||
public List<UserRole> findAll() {
|
||||
EasyCriteria<UserRole> criteria = EasyCriteriaFactory
|
||||
.createQueryCriteria(em, getType());
|
||||
criteria.setDistinctTrue();
|
||||
criteria.leftJoinFetch(UserRole_.user.getName());
|
||||
return criteria.getResultList();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user