List of usage examples for org.hibernate.transform DistinctRootEntityResultTransformer INSTANCE
DistinctRootEntityResultTransformer INSTANCE
To view the source code for org.hibernate.transform DistinctRootEntityResultTransformer INSTANCE.
Click Source Link
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; }