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.permissions.PermissionRepositoryImpl.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override/*from   w ww  .  j a v  a 2  s  .c o  m*/
@Transactional(readOnly = true)
public Set<Principal> getPrincipalsWithPermissions(Permission permission) {

    Criteria crit = createCriteria(Principal.class)
            .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY).createCriteria("roles")
            .createCriteria("permissions").add(Restrictions.eq("resourceKey", permission.getResourceKey()));

    return new HashSet<Principal>(crit.list());
}

From source file:com.hypersocket.permissions.PermissionRepositoryImpl.java

License:Open Source License

@Override
@Transactional(readOnly = true)//from   w  w w .  j a v  a2 s . c o  m
public List<Role> searchRoles(final Realm realm, String searchPattern, int start, int length,
        ColumnSort[] sorting) {
    return search(Role.class, "name", searchPattern, start, length, sorting, new CriteriaConfiguration() {

        @Override
        public void configure(Criteria criteria) {
            criteria.add(Restrictions.eq("personalRole", false));
            criteria.add(Restrictions.eq("hidden", false));
            criteria.setFetchMode("permissions", FetchMode.SELECT);
            criteria.setFetchMode("principals", FetchMode.SELECT);
            criteria.setFetchMode("resources", FetchMode.SELECT);
            criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
            criteria.add(Restrictions.eq("realm", realm));
        }
    });
}

From source file:com.hypersocket.permissions.PermissionRepositoryImpl.java

License:Open Source License

@Override
@Transactional(readOnly = true)/*w w w . j av a2s. c  om*/
public Long countRoles(final Realm realm, String searchPattern) {
    return getCount(Role.class, "name", searchPattern, new CriteriaConfiguration() {

        @Override
        public void configure(Criteria criteria) {
            criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
            criteria.add(Restrictions.eq("personalRole", false));
            criteria.add(Restrictions.eq("hidden", false));
            criteria.add(Restrictions.or(Restrictions.eq("realm", realm), Restrictions.isNull("realm")));
        }
    });
}

From source file:com.hypersocket.permissions.PermissionRepositoryImpl.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override/*from   w ww  .  j  ava 2 s  .  c  o  m*/
@Transactional
public Role getPersonalRole(Principal principal) {

    Criteria crit = createCriteria(Role.class).setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY)
            .add(Restrictions.eq("personalRole", true)).createCriteria("principals")
            .add(Restrictions.in("id", Arrays.asList(principal.getId())));

    Set<Role> roles = new HashSet<Role>(crit.list());

    if (roles.isEmpty()) {
        return createPersonalRole(principal);
    } else {
        return roles.iterator().next();
    }
}

From source file:com.hypersocket.permissions.PermissionRepositoryImpl.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override/*from  ww  w . j  av a 2  s .  com*/
@Transactional(readOnly = true)
public Set<Role> getRolesForPrincipal(List<Principal> principals) {

    if (principals == null) {
        return new HashSet<Role>();
    }

    Criteria crit = createCriteria(Role.class).setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

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

    crit = crit.createCriteria("principals").add(Restrictions.in("id", ids));

    Set<Role> roles = new HashSet<Role>(crit.list());
    roles.addAll(getAllUserRoles(principals.get(0).getRealm()));
    return roles;
}

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

License:Open Source License

@SuppressWarnings("unchecked")
@Transactional(readOnly = true)/*from   www .ja va  2 s. c  o  m*/
protected <T> List<T> list(Class<T> cls, boolean caseInsensitive, CriteriaConfiguration... configs) {
    Criteria criteria = createCriteria(cls);
    for (CriteriaConfiguration c : configs) {
        c.configure(criteria);
    }
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    @SuppressWarnings("rawtypes")
    List results = criteria.list();
    return results;
}

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

License:Open Source License

@SuppressWarnings("unchecked")
@Transactional(readOnly = true)/*  w w w .  j  a  v  a  2 s  .c  om*/
protected <T> Collection<T> list(Class<T> cls, CriteriaConfiguration... configs) {
    Criteria criteria = createCriteria(cls);
    for (CriteriaConfiguration c : configs) {
        c.configure(criteria);
    }
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    @SuppressWarnings("rawtypes")
    List results = criteria.list();
    return results;
}

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

License:Open Source License

@SuppressWarnings("unchecked")
@Transactional(readOnly = true)//from w  w w .  j  av  a  2s .c om
protected <T> List<T> list(String column, Object value, Class<T> cls, boolean caseInsensitive,
        DetachedCriteriaConfiguration... configs) {
    DetachedCriteria criteria = createDetachedCriteria(cls);
    if (caseInsensitive) {
        criteria.add(Restrictions.eq(column, value).ignoreCase());
    } else {
        criteria.add(Restrictions.eq(column, value));
    }
    for (DetachedCriteriaConfiguration c : configs) {
        c.configure(criteria);
    }
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    @SuppressWarnings("rawtypes")
    List results = hibernateTemplate.findByCriteria(criteria);
    return results;
}

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

License:Open Source License

@SuppressWarnings("unchecked")
@Transactional(readOnly = true)/*from w  w  w. j  a v a 2  s  .c  om*/
protected <T> T get(String column, Object value, Class<T> cls, boolean caseInsensitive,
        DetachedCriteriaConfiguration... configs) {
    DetachedCriteria criteria = createDetachedCriteria(cls);
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    if (caseInsensitive) {
        criteria.add(Restrictions.eq(column, value).ignoreCase());
    } else {
        criteria.add(Restrictions.eq(column, value));
    }
    for (DetachedCriteriaConfiguration c : configs) {
        c.configure(criteria);
    }
    @SuppressWarnings("rawtypes")
    List results = hibernateTemplate.findByCriteria(criteria);
    if (results.isEmpty()) {
        return null;
    } else if (results.size() > 1) {
        if (log.isWarnEnabled()) {
            log.warn("Too many results returned in get request for column=" + column + " value=" + value
                    + " class=" + cls.getName());
        }
    }
    return (T) results.get(0);
}

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

License:Open Source License

@SuppressWarnings("unchecked")
@Transactional(readOnly = true)/*from   ww  w.  ja v  a  2s .  co  m*/
protected <T> T get(Class<T> cls, DetachedCriteriaConfiguration... configs) {
    DetachedCriteria criteria = createDetachedCriteria(cls);
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

    for (DetachedCriteriaConfiguration c : configs) {
        c.configure(criteria);
    }
    @SuppressWarnings("rawtypes")
    List results = hibernateTemplate.findByCriteria(criteria);
    if (results.isEmpty()) {
        return null;
    } else if (results.size() > 1) {
        throw new IllegalStateException("Too many results returned in get request class=" + cls.getName());
    }
    return (T) results.get(0);
}