Example usage for org.hibernate.transform DistinctRootEntityResultTransformer INSTANCE

List of usage examples for org.hibernate.transform DistinctRootEntityResultTransformer INSTANCE

Introduction

In this page you can find the example usage for org.hibernate.transform DistinctRootEntityResultTransformer INSTANCE.

Prototype

DistinctRootEntityResultTransformer INSTANCE

To view the source code for org.hibernate.transform DistinctRootEntityResultTransformer INSTANCE.

Click Source Link

Usage

From source file:br.com.bean.RestControllers.faculdadeController.java

@RequestMapping(value = "busca-faculdades", method = RequestMethod.GET)
public String get() throws ParseException {
    Session sessao = HibernateUtility.getSession();
    Transaction transacao = sessao.beginTransaction();
    try {//  w w w. j a  v  a  2s.  c o m
        Criteria query = sessao.createCriteria(Faculdade.class);
        Criterion ativo = Restrictions.eq("ativo", 1);
        query.setResultTransformer(DistinctRootEntityResultTransformer.INSTANCE);
        query.add(ativo);
        List<Faculdade> listaDeFaculdades = query.list();
        // Retira Referencia Circular
        for (Faculdade f : listaDeFaculdades) {
            f.setTurmas(null);
        }
        Type TipolistaDeFaculdades = new TypeToken<List<Faculdade>>() {
        }.getType();
        Gson gson = new GsonBuilder().registerTypeAdapter(Collection.class, new CollectionDeserializer())
                .create();
        String faculdades = gson.toJson(listaDeFaculdades, TipolistaDeFaculdades);
        return faculdades;
    } catch (HibernateException e) {
        transacao.rollback();
        return null;
    } catch (Exception e) {
        String erro = e.getMessage();
        return null;
    } finally {
        sessao.close();
    }
}

From source file:br.com.bean.RestControllers.turmaController.java

@RequestMapping(value = "busca-turmas", method = RequestMethod.GET)
@ResponseBody//ww  w.jav  a  2  s .  co m
public String buscaTurmas(long faculdadeId) throws ParseException {
    Session sessao = HibernateUtility.getSession();
    Transaction transacao = sessao.beginTransaction();
    try {
        Criteria turmaCrit = sessao.createCriteria(Turma.class);
        turmaCrit.add(Restrictions.eq("ativo", 1));
        Criteria faculdadeCrit = turmaCrit.createCriteria("faculdade");
        faculdadeCrit.add(Restrictions.eq("faculdadeId", faculdadeId));
        turmaCrit.setResultTransformer(DistinctRootEntityResultTransformer.INSTANCE);
        List<Turma> listaDeTurmas = turmaCrit.list();
        for (Turma t : listaDeTurmas) {
            t.setFaculdade(null);
        }
        Type TipolistaDeTurmas = new TypeToken<List<Turma>>() {
        }.getType();
        Gson gson = new GsonBuilder().registerTypeAdapter(Collection.class, new CollectionDeserializer())
                .create();
        return gson.toJson(listaDeTurmas, TipolistaDeTurmas);
    } catch (HibernateException e) {
        transacao.rollback();
        return null;
    } finally {
        sessao.close();
    }
}

From source file:com.amalto.core.storage.hibernate.StandardQueryHandler.java

License:Open Source License

protected Criteria createCriteria(Select select) {
    List<ComplexTypeMetadata> selectedTypes = select.getTypes();
    if (selectedTypes.isEmpty()) {
        throw new IllegalArgumentException("Select clause is expected to select at least one entity type."); //$NON-NLS-1$
    }/*from www .  j av a  2s .c  o  m*/
    mainType = selectedTypes.get(0);
    String mainClassName = ClassCreator.getClassName(mainType.getName());
    criteria = session.createCriteria(mainClassName, mainType.getName());
    if (!select.forUpdate()) {
        criteria.setReadOnly(true); // We are reading data, turns on ready only mode.
    }
    // Handle JOIN (if any)
    List<Join> joins = select.getJoins();
    for (Join join : joins) {
        join.accept(this);
    }
    // If select is not a projection, selecting root type is enough, otherwise add projection for selected fields.
    if (select.isProjection()) {
        boolean toDistinct = true;
        projectionList = Projections.projectionList();
        {
            List<TypedExpression> queryFields = select.getSelectedFields();
            boolean isCountQuery = false;
            boolean hasGroupSize = false;
            for (Expression selectedField : queryFields) {
                if (selectedField instanceof GroupSize) {
                    hasGroupSize = true;
                }
                selectedField.accept(this);
                if (selectedField instanceof Alias) {
                    Alias alias = (Alias) selectedField;
                    if (alias.getTypedExpression() instanceof Count) {
                        isCountQuery = true;
                    }
                    if (alias.getTypedExpression() instanceof Distinct) {
                        toDistinct = false;
                    }
                }
            }
            // TMDM-9502/TMDM-10395, If selected fields including "GroupSize", besides GROUP BY "x_talend_task_id"
            // NOT ORACLE DB, should GROUP BY "All Key Fields"
            // ORACLE DB, need to GROUP BY "All Selected Fields"
            if (hasGroupSize) {
                projectionList = optimizeProjectionList(mainType, projectionList);
            }
            if (isCountQuery && queryFields.size() > 1) {
                Projection projection = projectionList.getProjection(projectionList.getLength() - 1);
                projectionList = Projections.projectionList();
                projectionList.add(projection);
                TypedExpression countTypedExpression = selectedFields.get(queryFields.size() - 1);
                selectedFields.clear();
                selectedFields.add(countTypedExpression);
            }
        }
        // for SELECT DISTINCT, ORDER BY expressions must appear in select list. Or it will throw exception in H2, postgres...
        for (OrderBy current : select.getOrderBy()) {
            if ((current.getExpression() instanceof Field
                    && !select.getSelectedFields().contains(current.getExpression()))
                    || current.getExpression() instanceof Type || current.getExpression() instanceof Alias) {
                toDistinct = false;
                break;
            }
        }
        if (select.getOrderBy().size() > 0 && toDistinct) {
            criteria.setProjection(Projections.distinct(projectionList));
        } else {
            criteria.setProjection(projectionList);
        }
    } else {
        // TMDM-5388: Hibernate sometimes returns duplicate results (like for User stored in System storage), this
        // line avoids this situation.
        criteria.setResultTransformer(DistinctRootEntityResultTransformer.INSTANCE);
    }
    // Make projection read only in case code tries to modify it later (see code that handles condition).
    projectionList = ReadOnlyProjectionList.makeReadOnly(projectionList);
    // Handle condition (if there's any condition to handle).
    Condition condition = select.getCondition();
    if (condition != null) {
        condition.accept(this);
    }
    // Order by
    for (OrderBy current : select.getOrderBy()) {
        if (current.getExpression() instanceof Count) {
            int limit = select.getPaging().getLimit();
            if (limit > 0) {
                RDBMSDataSource dataSource = (RDBMSDataSource) storage.getDataSource();
                if (dataSource.getDialectName() == RDBMSDataSource.DataSourceDialect.DB2
                        || dataSource.getDialectName() == RDBMSDataSource.DataSourceDialect.SQL_SERVER) {
                    LOGGER.error("The query is not supported by DB2 and SQLSERVER Database."); //$NON-NLS-1$
                    throw new UnsupportedQueryException(
                            "The query is not supported by DB2 and SQLSERVER Database."); //$NON-NLS-1$
                }
            }
        }
        current.accept(this);
    }
    return criteria;
}

From source file:com.tysanclan.site.projectewok.entities.dao.hibernate.ExpenseDAOImpl.java

License:Open Source License

@Override
protected Criteria createCriteria(SearchFilter<Expense> filter) {
    Criteria criteria = getSession().createCriteria(Expense.class);

    if (filter instanceof ExpenseFilter) {
        ExpenseFilter eFilter = (ExpenseFilter) filter;
        if (eFilter.getFrom() != null) {
            criteria.add(//from ww w. j a  va 2 s.c  om
                    Restrictions.or(Restrictions.ge("end", eFilter.getFrom()), Restrictions.isNull("end")));
        }
        if (eFilter.getTo() != null) {
            criteria.add(
                    Restrictions.or(Restrictions.le("start", eFilter.getTo()), Restrictions.isNull("start")));
        }
    }

    criteria.setResultTransformer(DistinctRootEntityResultTransformer.INSTANCE);

    return criteria;
}

From source file:com.zcon.mobileris.repositories.impl.CptRepositoryImpl.java

@Override
public List<CptCode> findAllCptCodes() {
    List<CptCode> lst = createCriteria().add(Restrictions.eq("isDeleted", false))
            .setResultTransformer(DistinctRootEntityResultTransformer.INSTANCE).addOrder(Order.asc("cptCode"))
            .list();/*from w w w.  ja va 2s  .  c o  m*/
    return lst;
}

From source file:com.zcon.mobileris.repositories.impl.FacilityRepositoryImpl.java

@Override
public List<Facilities> getAllFacilities() {
    List<Facilities> lst = createCriteria().add(Restrictions.eq("isDeleted", false))
            .setResultTransformer(DistinctRootEntityResultTransformer.INSTANCE)
            .addOrder(Order.asc("facilityName")).list();
    return lst;//from w w w.ja v a 2  s  . c o  m
}

From source file:com.zcon.mobileris.repositories.impl.IcdRepositoryImpl.java

@Override
public List<IcdCode> findAllIcdCodes() {
    List<IcdCode> lst = createCriteria().setResultTransformer(DistinctRootEntityResultTransformer.INSTANCE)
            .addOrder(Order.asc("code")).list();
    return lst;//  w ww. j  a  va  2s.  c  om
}

From source file:daoImpl.GroupsDAOImpl.java

@Override
public List<Groups> listGroups() {
    Session session = sFac.openSession();
    List<Groups> groupList = session.createQuery("from Groups G left join fetch G.usersGroupses")
            .setResultTransformer(DistinctRootEntityResultTransformer.INSTANCE).list();
    session.close();//from  www . ja va 2  s .  com
    return groupList;
}

From source file:daoImpl.GroupsDAOImpl.java

@Override
public List<Users> findGroupMembers(int gid) {
    Session session = sFac.openSession();
    Query query = session.createQuery("SELECT UG.users from UsersGroups UG where UG.groups.groupId = :group_id")
            .setResultTransformer(DistinctRootEntityResultTransformer.INSTANCE);
    query.setParameter("group_id", gid);
    List<Users> groupUsers = query.list();
    session.close();//  w  ww .j av  a2 s  . c o m
    return groupUsers;
}

From source file:daoImpl.GroupsDAOImpl.java

@Override
public List<Groups> findGroupsByName(String groupName) {
    Session session = sFac.openSession();
    Query query = session.createQuery(
            "from Groups G left join fetch G.usersGroupses left join fetch G.tagses where G.groupname like concat('%', :group_name , '%')")
            .setResultTransformer(DistinctRootEntityResultTransformer.INSTANCE);
    query.setParameter("group_name", groupName);
    query.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
    List<Groups> groups = query.list();
    session.close();//from  w w  w. j a v  a 2s . c  o m
    return groups;
}