Example usage for org.hibernate.criterion CriteriaSpecification DISTINCT_ROOT_ENTITY

List of usage examples for org.hibernate.criterion CriteriaSpecification DISTINCT_ROOT_ENTITY

Introduction

In this page you can find the example usage for org.hibernate.criterion CriteriaSpecification DISTINCT_ROOT_ENTITY.

Prototype

ResultTransformer DISTINCT_ROOT_ENTITY

To view the source code for org.hibernate.criterion CriteriaSpecification DISTINCT_ROOT_ENTITY.

Click Source Link

Document

Each row of results is a distinct instance of the root entity

Usage

From source file:com.hypersocket.repository.AbstractRepositoryImpl.java

License:Open Source License

@SuppressWarnings("unchecked")
@Transactional(readOnly = true)/*from w  w w  .j  a  v  a2s.  c om*/
protected <T> List<T> allEntities(Class<T> cls, DetachedCriteriaConfiguration... configs) {
    DetachedCriteria criteria = createDetachedCriteria(cls);

    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    criteria.add(Restrictions.eq("deleted", false));
    for (DetachedCriteriaConfiguration c : configs) {
        c.configure(criteria);
    }
    return (List<T>) hibernateTemplate.findByCriteria(criteria);
}

From source file:com.hypersocket.repository.AbstractRepositoryImpl.java

License:Open Source License

@SuppressWarnings("unchecked")
@Transactional(readOnly = true)/*from w  w  w  .j  a va  2  s.c  o m*/
protected <T> List<T> allEntities(Class<T> cls, CriteriaConfiguration... configs) {
    Criteria criteria = createCriteria(cls);
    criteria.add(Restrictions.eq("deleted", false));
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    for (CriteriaConfiguration c : configs) {
        c.configure(criteria);
    }
    return (List<T>) criteria.list();
}

From source file:com.hypersocket.repository.AbstractRepositoryImpl.java

License:Open Source License

@Override
@Transactional(readOnly = true)//from   www. j  a  v a  2s .co  m
public Long getCount(Class<?> clz, String searchColumn, String searchPattern,
        CriteriaConfiguration... configs) {

    Criteria criteria = createCriteria(clz);

    for (CriteriaConfiguration c : configs) {
        c.configure(criteria);
    }

    if (!StringUtils.isEmpty(searchPattern)) {
        criteria.add(Restrictions.ilike(searchColumn, searchPattern));
    }

    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    criteria.setProjection(Projections.rowCount());

    return (long) criteria.uniqueResult();
}

From source file:com.hypersocket.repository.AbstractRepositoryImpl.java

License:Open Source License

@Override
public List<?> getCounts(Class<?> clz, String groupBy, CriteriaConfiguration... configs) {

    Criteria criteria = createCriteria(clz);

    for (CriteriaConfiguration c : configs) {
        c.configure(criteria);/*from www. j  a v a2  s .co  m*/
    }

    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    criteria.setProjection(Projections.projectionList().add(Projections.groupProperty(groupBy))
            .add(Projections.count(groupBy)));

    return criteria.list();
}

From source file:com.hypersocket.repository.AbstractRepositoryImpl.java

License:Open Source License

@SuppressWarnings("unchecked")
@Transactional(readOnly = true)/*  ww w .java 2 s . co  m*/
public <T> List<T> search(Class<T> clz, final String searchColumn, final String searchPattern, final int start,
        final int length, final ColumnSort[] sorting, CriteriaConfiguration... configs) {
    Criteria criteria = createCriteria(clz);
    if (!StringUtils.isEmpty(searchPattern)) {
        criteria.add(Restrictions.ilike(searchColumn, searchPattern));
    }

    for (CriteriaConfiguration c : configs) {
        c.configure(criteria);
    }

    for (ColumnSort sort : sorting) {
        criteria.addOrder(sort.getSort() == Sort.ASC ? Order.asc(sort.getColumn().getColumnName())
                : Order.desc(sort.getColumn().getColumnName()));
    }

    criteria.setProjection(Projections.distinct(Projections.id()));

    criteria.setFirstResult(start);
    criteria.setMaxResults(length);

    List<T> ids = (List<T>) criteria.list();

    if (ids.isEmpty()) {
        return new ArrayList<T>();
    }

    criteria = createCriteria(clz);

    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    criteria.add(Restrictions.in("id", ids));

    return ((List<T>) criteria.list());
}

From source file:com.hypersocket.repository.DistinctRootEntity.java

License:Open Source License

@Override
public void configure(DetachedCriteria criteria) {
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
}

From source file:com.hypersocket.resource.AbstractAssignableResourceRepositoryImpl.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override//from   w  ww.  ja  va  2  s. com
public Collection<T> getAssignedResources(Principal... principals) {

    Criteria criteria = createCriteria(getResourceClass());
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

    criteria.add(Restrictions.eq("realm", principals[0].getRealm()));

    criteria = criteria.createCriteria("roles");
    criteria.add(Restrictions.eq("allUsers", true));

    Set<T> everyone = new HashSet<T>(criteria.list());

    Set<Long> ids = new HashSet<Long>();
    for (Principal p : principals) {
        ids.add(p.getId());
    }

    criteria = createCriteria(getResourceClass());

    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

    criteria.add(Restrictions.eq("realm", principals[0].getRealm()));

    criteria = criteria.createCriteria("roles");
    criteria.add(Restrictions.eq("allUsers", false));
    criteria = criteria.createCriteria("principals");
    criteria.add(Restrictions.in("id", ids));

    everyone.addAll((List<T>) criteria.list());
    return everyone;
}

From source file:com.hypersocket.resource.AbstractAssignableResourceRepositoryImpl.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override/*from  www  . j a  v  a2 s  .co m*/
public Collection<T> searchAssignedResources(List<Principal> principals, final String searchPattern,
        final int start, final int length, final ColumnSort[] sorting, CriteriaConfiguration... configs) {

    Criteria criteria = createCriteria(getResourceClass());
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

    if (StringUtils.isNotBlank(searchPattern)) {
        criteria.add(Restrictions.ilike("name", searchPattern));
    }

    for (CriteriaConfiguration c : configs) {
        c.configure(criteria);
    }

    criteria.add(Restrictions.eq("realm", principals.get(0).getRealm()));
    criteria = criteria.createCriteria("roles");
    criteria.add(Restrictions.eq("allUsers", true));

    Set<T> everyone = new HashSet<T>(criteria.list());

    criteria = createCriteria(getResourceClass());

    ProjectionList projList = Projections.projectionList();
    projList.add(Projections.property("id"));
    projList.add(Projections.property("name"));

    criteria.setProjection(Projections.distinct(projList));
    criteria.setFirstResult(start);
    criteria.setMaxResults(length);

    if (StringUtils.isNotBlank(searchPattern)) {
        criteria.add(Restrictions.ilike("name", searchPattern));
    }

    for (CriteriaConfiguration c : configs) {
        c.configure(criteria);
    }

    for (ColumnSort sort : sorting) {
        criteria.addOrder(sort.getSort() == Sort.ASC ? Order.asc(sort.getColumn().getColumnName())
                : Order.desc(sort.getColumn().getColumnName()));
    }

    criteria.add(Restrictions.eq("realm", principals.get(0).getRealm()));

    criteria = criteria.createCriteria("roles");
    criteria.add(Restrictions.eq("allUsers", false));
    criteria = criteria.createCriteria("principals");

    List<Long> ids = new ArrayList<Long>();
    for (Principal p : principals) {
        ids.add(p.getId());
    }
    criteria.add(Restrictions.in("id", ids));

    List<Object[]> results = (List<Object[]>) criteria.list();

    if (results.size() > 0) {
        Long[] entityIds = new Long[results.size()];
        int idx = 0;
        for (Object[] obj : results) {
            entityIds[idx++] = (Long) obj[0];
        }

        criteria = createCriteria(getResourceClass());
        criteria.add(Restrictions.in("id", entityIds));

        everyone.addAll((List<T>) criteria.list());
    }
    return everyone;
}

From source file:com.hypersocket.resource.AbstractAssignableResourceRepositoryImpl.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override//from  www  .  jav a2s  .co m
public Collection<Principal> getAssignedPrincipals(Realm realm, CriteriaConfiguration... configs) {

    Criteria criteria = createCriteria(getResourceClass());

    for (CriteriaConfiguration c : configs) {
        c.configure(criteria);
    }

    criteria.add(Restrictions.eq("realm", realm));
    criteria = criteria.createCriteria("roles");
    criteria.add(Restrictions.eq("allUsers", false));

    criteria = criteria.createCriteria("principals");
    criteria.setProjection(Projections.distinct(Projections.property("id")));
    criteria.setResultTransformer(CriteriaSpecification.PROJECTION);

    List<?> uniquePrincipals = criteria.list();

    if (uniquePrincipals.isEmpty()) {
        return new HashSet<Principal>();
    }
    criteria = createCriteria(Principal.class);
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    criteria.add(Restrictions.in("id", uniquePrincipals));
    List<?> res = criteria.list();

    return (Collection<Principal>) res;
}

From source file:com.hypersocket.resource.AbstractAssignableResourceRepositoryImpl.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override//from w w  w. ja va  2 s  .  c  o  m
public List<AssignableResource> getAllAssignableResources(List<Principal> principals) {

    Set<Long> ids = new HashSet<Long>();
    for (Principal p : principals) {
        ids.add(p.getId());
    }
    Criteria crit = createCriteria(AssignableResource.class);
    crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    crit = crit.createCriteria("roles");
    crit = crit.createCriteria("principals");
    crit.add(Restrictions.in("id", ids));

    return (List<AssignableResource>) crit.list();
}