List of usage examples for org.hibernate.criterion DetachedCriteria setProjection
public DetachedCriteria setProjection(Projection projection)
From source file:gr.abiss.calipso.hibernate.HibernateDao.java
License:Open Source License
@Override public List<PageInforamaDocument> findPageInforamaDocumentMatching( PageInforamaDocumentSearch pageInforamaDocumentSearch) { DetachedCriteria criteria = pageInforamaDocumentSearch.getDetachedCriteria(); List<PageInforamaDocument> list = getHibernateTemplate().findByCriteria(criteria, pageInforamaDocumentSearch.getPageBegin() - 1, pageInforamaDocumentSearch.getPageSize()); criteria = pageInforamaDocumentSearch.getDetachedCriteriaForCount(); criteria.setProjection(Projections.rowCount()); Long count = (Long) getHibernateTemplate().findByCriteria(criteria).get(0); pageInforamaDocumentSearch.setResultCount(count); return list;/*from w w w . j a va 2s . com*/ }
From source file:gr.abiss.calipso.hibernate.HibernateDao.java
License:Open Source License
@Override public List<InforamaDocumentParameter> findInforamaDocumentParameterMatching( InforamaDocumentParameterSearch inforamaDocumentParameterSearch) { DetachedCriteria criteria = inforamaDocumentParameterSearch.getDetachedCriteria(); List<InforamaDocumentParameter> list = getHibernateTemplate().findByCriteria(criteria, inforamaDocumentParameterSearch.getPageBegin() - 1, inforamaDocumentParameterSearch.getPageSize()); criteria = inforamaDocumentParameterSearch.getDetachedCriteriaForCount(); criteria.setProjection(Projections.rowCount()); Long count = (Long) getHibernateTemplate().findByCriteria(criteria).get(0); inforamaDocumentParameterSearch.setResultCount(count); return list;// w ww . j a v a 2s . co m }
From source file:id.web.faisalabdillah.dao.AbstractDao.java
License:Open Source License
protected int getResultSize(DetachedCriteria c) { c.setProjection(Projections.rowCount()); return ((Long) getHibernateTemplate().findByCriteria(c, 0, 0).get(0)).intValue(); }
From source file:info.jtrac.hibernate.HibernateJtracDao.java
License:Apache License
public List<Item> findItems(ItemSearch itemSearch) { int pageSize = itemSearch.getPageSize(); // TODO: if we are ordering by a custom column, we must load the whole // list to do an in-memory sort. we need to find a better way Field.Name sortFieldName = Field.isValidName(itemSearch.getSortFieldName()) ? Field.convertToName(itemSearch.getSortFieldName()) : null;/*w ww . j a v a 2 s . c o m*/ // only trigger the in-memory sort for drop-down fields and when querying within a space // UI currently does not allow you to sort by custom field when querying across spaces, but check again boolean doInMemorySort = sortFieldName != null && sortFieldName.isDropDownType() && itemSearch.getSpace() != null; if (pageSize == -1 || doInMemorySort) { List<Item> list = getHibernateTemplate().findByCriteria(itemSearch.getCriteria()); if (!list.isEmpty() && doInMemorySort) { doInMemorySort(list, itemSearch); } itemSearch.setResultCount(list.size()); if (pageSize != -1) { // order-by was requested on custom field, so we loaded all results, but only need one page int start = pageSize * itemSearch.getCurrentPage(); int end = Math.min(start + itemSearch.getPageSize(), list.size()); return list.subList(start, end); } return list; } else { // pagination if (itemSearch.isBatchMode()) { getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) { session.clear(); return null; } }); } int firstResult = pageSize * itemSearch.getCurrentPage(); List<Item> list = getHibernateTemplate().findByCriteria(itemSearch.getCriteria(), firstResult, pageSize); if (!itemSearch.isBatchMode()) { DetachedCriteria criteria = itemSearch.getCriteriaForCount(); criteria.setProjection(Projections.rowCount()); Integer count = (Integer) getHibernateTemplate().findByCriteria(criteria).get(0); itemSearch.setResultCount(count); } return list; } }
From source file:info.jtrac.repository.HibernateJtracDao.java
License:Apache License
@Override @Transactional(propagation = Propagation.SUPPORTS) public List<Item> findItems(ItemSearch itemSearch) { int pageSize = itemSearch.getPageSize(); // TODO: if we are ordering by a custom column, we must load the whole // list to do an in-memory sort. we need to find a better way Field.Name sortFieldName = Field.isValidName(itemSearch.getSortFieldName()) ? Field.convertToName(itemSearch.getSortFieldName()) : null;/* w w w .ja v a 2 s. com*/ // only trigger the in-memory sort for drop-down fields and when querying within a space // UI currently does not allow you to sort by custom field when querying across spaces, but check again boolean doInMemorySort = sortFieldName != null && sortFieldName.isDropDownType() && itemSearch.getSpace() != null; DetachedCriteria criteria = getCriteria(itemSearch); if (pageSize == -1 || doInMemorySort) { @SuppressWarnings("unchecked") List<Item> list = criteria.getExecutableCriteria(getSession()).list(); if (!list.isEmpty() && doInMemorySort) { doInMemorySort(list, itemSearch); } itemSearch.setResultCount(list.size()); if (pageSize != -1) { // order-by was requested on custom field, so we loaded all results, but only need one page int start = pageSize * itemSearch.getCurrentPage(); int end = Math.min(start + itemSearch.getPageSize(), list.size()); return list.subList(start, end); } return list; } else { // pagination if (itemSearch.isBatchMode()) { entityManager.clear(); } int firstResult = pageSize * itemSearch.getCurrentPage(); @SuppressWarnings("unchecked") List<Item> list = criteria.getExecutableCriteria(getSession()).setFirstResult(firstResult) .setMaxResults(pageSize).list(); if (!itemSearch.isBatchMode()) { criteria = getCriteriaForCount(itemSearch).criteria; criteria.setProjection(Projections.rowCount()); Long count = (Long) criteria.getExecutableCriteria(getSession()).list().get(0); itemSearch.setResultCount(count); } return list; } }
From source file:kr.debop4j.access.test.repository.CriteriaSampleTest.java
License:Apache License
@Test @Transactional(readOnly = true)//from w w w .jav a2 s . com public void subqueriesTest() { DetachedCriteria memberSizeDc = DetachedCriteria.forClass(DepartmentMember.class); memberSizeDc.setProjection(Projections.projectionList().add(Projections.groupProperty("department")) .add(Projections.rowCount(), "count")).addOrder(Order.desc("count")); Object[] members = (Object[]) memberSizeDc.getExecutableCriteria(hibernateDao.getSession()).setMaxResults(1) .uniqueResult(); if (members != null) { Long departmentId = (Long) members[0]; DetachedCriteria dc = DetachedCriteria.forClass(Department.class); dc.add(Restrictions.eq("id", departmentId)); dc.getExecutableCriteria(UnitOfWorks.getCurrentSession()).list(); } }
From source file:kr.debop4j.access.test.repository.CriteriaSampleTest.java
License:Apache License
@Test @Transactional(readOnly = true)/*from w w w. j a v a2s . c o m*/ public void subqueriesTest2() { DetachedCriteria memberSizeDc = DetachedCriteria.forClass(DepartmentMember.class); memberSizeDc.setProjection(Projections.projectionList().add(Projections.groupProperty("department")) .add(Projections.rowCount(), "count")); DetachedCriteria dc = DetachedCriteria.forClass(Department.class); dc.add(Subqueries.propertyEq("id", memberSizeDc)); }
From source file:main.java.info.jtrac.hibernate.HibernateJtracDao.java
License:Apache License
public List<Item> findItems(ItemSearch itemSearch) { int pageSize = itemSearch.getPageSize(); if (pageSize == -1) { List<Item> list = getHibernateTemplate().findByCriteria(itemSearch.getCriteria()); itemSearch.setResultCount(list.size()); return list; } else {// w ww.j ava2 s . co m // pagination int firstResult = pageSize * itemSearch.getCurrentPage(); List<Item> list = getHibernateTemplate().findByCriteria(itemSearch.getCriteria(), firstResult, pageSize); DetachedCriteria criteria = itemSearch.getCriteriaForCount(); criteria.setProjection(Projections.rowCount()); Integer count = (Integer) getHibernateTemplate().findByCriteria(criteria).get(0); itemSearch.setResultCount(count); return list; } }
From source file:mitm.common.security.ca.hibernate.CertificateRequestDAO.java
License:Open Source License
@SuppressWarnings("unchecked") public CertificateRequestEntity getNextRequest(Date notAfter) { DetachedCriteria minDateCriteria = createDetachedCriteria(CertificateRequestEntity.ENTITY_NAME); /*/* ww w .j a v a 2 s . co m*/ * Create a criteria to get the oldest nextUpdate */ minDateCriteria.setProjection(Projections.min(CertificateRequestEntity.NEXT_UPDATE_COLUMN_NAME)); Criteria criteria = createCriteria(CertificateRequestEntity.ENTITY_NAME); criteria.add(Restrictions.or( Property.forName(CertificateRequestEntity.NEXT_UPDATE_COLUMN_NAME).eq(minDateCriteria), Restrictions.isNull(CertificateRequestEntity.NEXT_UPDATE_COLUMN_NAME))); /* * We only want entries that are older than notAfter or have no nextUpdate yet. The reason for notAfter is * that we do not want to try too fast in succession. By setting notAfter to the current date we will only * get entries for which the update is long overdue. */ criteria.add(Restrictions.or(Restrictions.le(CertificateRequestEntity.NEXT_UPDATE_COLUMN_NAME, notAfter), Restrictions.isNull(CertificateRequestEntity.NEXT_UPDATE_COLUMN_NAME))); addSortOnCreationDate(criteria); CertificateRequestEntity next = null; List<CertificateRequestEntity> found = criteria.list(); if (found != null && found.size() > 0) { next = found.get(0); } return next; }
From source file:mitm.common.security.certstore.dao.X509CertStoreDAOHibernate.java
License:Open Source License
@Override public X509CertStoreEntryHibernate getLatest() { DetachedCriteria maxDateCriteria = createDetachedCriteria(entityName); maxDateCriteria.setProjection(Projections.max(getColumnName(Field.CREATION_DATE))); maxDateCriteria.add(Restrictions.eq(getColumnName(Field.STORE_NAME), storeName)); Criteria criteria = createCriteria(entityName); criteria.add(Property.forName(getColumnName(Field.CREATION_DATE)).eq(maxDateCriteria)); criteria.add(Restrictions.eq(getColumnName(Field.STORE_NAME), storeName)); return (X509CertStoreEntryHibernate) criteria.uniqueResult(); }