List of usage examples for org.hibernate.criterion DetachedCriteria setFetchMode
public DetachedCriteria setFetchMode(String associationPath, FetchMode mode)
From source file:ch.systemsx.cisd.openbis.generic.server.dataaccess.db.EntityTypeDAO.java
License:Apache License
public final <T extends EntityTypePE> List<T> listEntityTypes() throws DataAccessException { final DetachedCriteria criteria = DetachedCriteria.forClass(getEntityClass()); criteria.add(Restrictions.eq("databaseInstance", getDatabaseInstance())); final String entityKindName = entityKind.name().toLowerCase(); criteria.setFetchMode(entityKindName + "TypePropertyTypesInternal", FetchMode.JOIN); criteria.setResultTransformer(DetachedCriteria.DISTINCT_ROOT_ENTITY); final List<T> list = cast(getHibernateTemplate().findByCriteria(criteria)); return list;// ww w . j a v a 2 s . c o m }
From source file:ch.systemsx.cisd.openbis.generic.server.dataaccess.db.ExperimentDAO.java
License:Apache License
public List<ExperimentPE> listExperimentsWithProperties(final ExperimentTypePE experimentTypeOrNull, final ProjectPE project) throws DataAccessException { assert project != null : "Unspecified project."; final DetachedCriteria criteria = DetachedCriteria.forClass(getEntityClass()); if (experimentTypeOrNull != null) { criteria.add(Restrictions.eq("experimentType", experimentTypeOrNull)); }/*from w w w . j a v a 2 s.co m*/ criteria.add(Restrictions.eq("projectInternal", project)); criteria.setFetchMode("experimentProperties", FetchMode.JOIN); criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); final List<ExperimentPE> list = cast(getHibernateTemplate().findByCriteria(criteria)); if (operationLog.isDebugEnabled()) { operationLog.debug(String.format("%d experiments have been found for project '%s'%s.", list.size(), project, (experimentTypeOrNull == null) ? "" : " and experiment type '" + experimentTypeOrNull + "'")); } return list; }
From source file:ch.systemsx.cisd.openbis.generic.server.dataaccess.db.ExternalDataDAO.java
License:Apache License
public ExternalDataPE tryToFindFullDataSetByCode(String dataSetCode, boolean withPropertyTypes) { assert dataSetCode != null : "Unspecified data set code"; final String mangledCode = CodeConverter.tryToDatabase(dataSetCode); final Criterion codeEq = Restrictions.eq("code", mangledCode); final DetachedCriteria criteria = DetachedCriteria.forClass(ENTITY_CLASS); criteria.add(codeEq);/*ww w.j ava 2 s. c om*/ if (withPropertyTypes) { criteria.setFetchMode("dataSetType.dataSetTypePropertyTypesInternal", FetchMode.JOIN); } criteria.setResultTransformer(DetachedCriteria.DISTINCT_ROOT_ENTITY); final List<ExternalDataPE> list = cast(getHibernateTemplate().findByCriteria(criteria)); final ExternalDataPE entity = tryFindEntity(list, "data set"); if (operationLog.isDebugEnabled()) { operationLog .debug(String.format("External data '%s' found for data set code '%s'.", entity, dataSetCode)); } return entity; }
From source file:ch.systemsx.cisd.openbis.generic.server.dataaccess.db.SampleTypeDAO.java
License:Apache License
public final List<SampleTypePE> listSampleTypes() throws DataAccessException { final DetachedCriteria criteria = DetachedCriteria.forClass(getEntityClass()); criteria.add(Restrictions.eq("databaseInstance", getDatabaseInstance())); criteria.setFetchMode("sampleTypePropertyTypesInternal", FetchMode.JOIN); criteria.setResultTransformer(DetachedCriteria.DISTINCT_ROOT_ENTITY); final List<SampleTypePE> list = cast(getHibernateTemplate().findByCriteria(criteria)); if (operationLog.isDebugEnabled()) { operationLog.debug(String.format("%s: %d sample type(s) have been found.", MethodUtils.getCurrentMethod().getName(), list.size())); }//from w w w. j ava 2 s .com return list; }
From source file:com.apress.progwt.server.dao.hibernate.UserDAOHibernateImpl.java
License:Apache License
/** * add all fetch mode concerns to the critera. without * DISTINCT_ROOT_ENTITY these fetches will create multiple rows * //ww w . j av a2s .c om * If we join both schoolRankings & processTypes, we'll get duplicates * again. Fetch one of the collections with a SELECT and initialize * instead. Test in UserServiceImpl.testFetch() * * Same with the process of each schoolRanking. Note, this is N+1 * selects. * * @param crit * @return */ private User fetchAllUser(DetachedCriteria crit) { crit.setFetchMode("schoolRankings", FetchMode.JOIN).setFetchMode("schoolRankings.school", FetchMode.JOIN) .setFetchMode("schoolRankings.process", FetchMode.SELECT) .setFetchMode("processTypes", FetchMode.SELECT) .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); User rtn = (User) DataAccessUtils.uniqueResult(getHibernateTemplate().findByCriteria(crit)); Hibernate.initialize(rtn.getProcessTypes()); Hibernate.initialize(rtn.getRatingTypes()); for (Application application : rtn.getSchoolRankings()) { Hibernate.initialize(application.getProcess()); Hibernate.initialize(application.getRatings()); } log.debug("fetched user: " + rtn.getNickname() + " ratings " + rtn.getRatingTypes().size()); // Hibernate.initialize(rtn.getSchoolRankings()); return rtn; }
From source file:com.ephesoft.dcma.da.dao.hibernate.FieldTypeDaoImpl.java
License:Open Source License
/** * An API to fetch all Field types by document type name. * // w ww. j a va 2 s . c om * @param docTypeName String * @param batchInstanceIdentifier String * @param isKVExtraction boolean * @return List<FieldType> */ @Override public List<FieldType> getFdTypeByDocumentTypeName(String docTypeName, String batchInstanceIdentifier, boolean isKVExtraction) { LOG.info("batchInstanceID ID : " + batchInstanceIdentifier); DetachedCriteria criteria = criteria(); criteria.createAlias(DOC_TYPE, DOC_TYPE, JoinFragment.INNER_JOIN); criteria.add(Restrictions.eq(DOC_TYPE_NAME, docTypeName)); criteria.createAlias(DOC_TYPE_BATCH_CLASS, BATCH_CLASS1, JoinFragment.INNER_JOIN); if (isKVExtraction) { criteria.setFetchMode("kvExtraction", FetchMode.JOIN); criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); } DetachedCriteria subQuery = criteria(BatchInstance.class); subQuery.add(Restrictions.eq(IDENTIFIER, batchInstanceIdentifier)); subQuery.createAlias(BATCH_CLASS, BATCH_CLASS2, JoinFragment.INNER_JOIN); subQuery.setProjection(Projections.property(BATCH_CLASS2_IDENTIFIER)); criteria.add(Subqueries.propertyEq(BATCH_CLASS1_IDENTIFIER, subQuery)); criteria.addOrder(org.hibernate.criterion.Order.asc(FIELD_ORDER_NUMBER)); return find(criteria); }
From source file:com.ephesoft.dcma.da.dao.hibernate.FieldTypeDaoImpl.java
License:Open Source License
/** * An API to fetch all Field types by document type name. * //w w w. j av a 2 s . c o m * @param docTypeName String * @param batchInstanceIdentifier String * @return List<FieldType> */ @Override public List<FieldType> getFdTypeAndRegexValidationByDocTypeName(String docTypeName, String batchInstanceIdentifier) { LOG.info("batchInstanceID ID : " + batchInstanceIdentifier); DetachedCriteria criteria = criteria(); criteria.createAlias(DOC_TYPE, DOC_TYPE, JoinFragment.INNER_JOIN); criteria.add(Restrictions.eq(DOC_TYPE_NAME, docTypeName)); criteria.createAlias(DOC_TYPE_BATCH_CLASS, BATCH_CLASS1, JoinFragment.INNER_JOIN); criteria.setFetchMode(REGEX_VALIDATION, FetchMode.JOIN); criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); DetachedCriteria subQuery = criteria(BatchInstance.class); subQuery.add(Restrictions.eq(IDENTIFIER, batchInstanceIdentifier)); subQuery.createAlias(BATCH_CLASS, BATCH_CLASS2, JoinFragment.INNER_JOIN); subQuery.setProjection(Projections.property(BATCH_CLASS2_IDENTIFIER)); criteria.add(Subqueries.propertyEq(BATCH_CLASS1_IDENTIFIER, subQuery)); criteria.addOrder(org.hibernate.criterion.Order.asc(FIELD_ORDER_NUMBER)); return find(criteria); }
From source file:com.griffinslogistics.book.BookService.java
@Override public List<BookForTransportationModel> getBooksForTransportModelByTransportId(Long transportId) { logger.log(Level.SEVERE, "{0}: getBooksForTransportation started", CLASS_NAME); List<BookForTransportationModel> resultList = new ArrayList<BookForTransportationModel>(); try {/*from w w w.j ava2 s.com*/ DetachedCriteria criteria = DetachedCriteria.forClass(Transport.class); criteria.add(Restrictions.eq("id", transportId)); criteria.setFetchMode("books", FetchMode.JOIN); criteria.setFetchMode("books.boxes", FetchMode.JOIN); Transport transportation = (Transport) this.dao.getByDetachedCriteria(criteria); for (Book book : transportation.getBooks()) { Hibernate.initialize(book.getBoxes()); if (book.getPrintingHouse() != null) { book.getPrintingHouse().getName(); } BookForTransportationModel model = BookForTransportationModel.fromBook(book); resultList.add(model); } Collections.reverse(resultList); } catch (HibernateException e) { logger.log(Level.SEVERE, e.getMessage()); } finally { logger.log(Level.SEVERE, "{0}: getBooksForTransportation finished", CLASS_NAME); } return resultList; }
From source file:com.griffinslogistics.bookspackage.BookspackageService.java
@Override public List<Bookspackage> getBookspackagesByTransportId(Long transportId) { DetachedCriteria criteria = DetachedCriteria.forClass(Transport.class); criteria.add(Restrictions.eq("id", transportId)); criteria.setFetchMode("bookspackages", FetchMode.JOIN); criteria.setFetchMode("bookspackages.truckGroup", FetchMode.JOIN); criteria.setFetchMode("bookspackages.books", FetchMode.JOIN); criteria.setFetchMode("bookspackages.boxes", FetchMode.JOIN); criteria.setFetchMode("bookspackages.books.boxes", FetchMode.JOIN); Transport transportationForBookspackage = (Transport) this.dao.getByDetachedCriteria(criteria); List<Bookspackage> bookspackages = new ArrayList(transportationForBookspackage.getBookspackages()); for (Bookspackage bookspackage : bookspackages) { BookspackagePriorityEnum priorityEnum = BookspackagePriorityEnum.byValue(bookspackage.getPriority()); bookspackage.setDisplayPriority(priorityEnum.getDisplayValue()); int totalBooksCount = 0; double totalBooksWeight = 0; int totalOrderedBooksCount = 0; double totalOrderedBooksWeight = 0; int totalBoxesCount = 0; for (Book book : bookspackage.getBooks()) { if (book.isDiscarded()) { bookspackage.setHasDiscardedBooks(true); }// w ww .j a v a 2s . co m totalOrderedBooksCount += book.getCount(); totalOrderedBooksWeight += book.getWeight(); for (Box box : book.getBoxes()) { int boxesCount = box.getBoxesCount(); int booksCount = box.getBooksCount(); totalBooksCount += boxesCount * booksCount; totalBooksWeight += boxesCount * booksCount * book.getWeightPerBook(); totalBoxesCount += boxesCount; } } TruckGroup truckGroup = bookspackage.getTruckGroup(); if (truckGroup != null) { truckGroup.getName(); } totalBooksWeight = Math.round(totalBooksWeight); totalOrderedBooksWeight = Math.round(totalOrderedBooksWeight); bookspackage.setTotalBooksCount(totalBooksCount); bookspackage.setTotalBooksWeight(totalBooksWeight); bookspackage.setTotalOrderedBooksCount(totalOrderedBooksCount); bookspackage.setTotalOrderedBooksWeight(totalOrderedBooksWeight); bookspackage.setBoxesCount(totalBoxesCount); } Collections.reverse(bookspackages); return bookspackages; }
From source file:com.griffinslogistics.transport.TransportService.java
@Override public Map<String, Double> totalWeightsForTransport(Long transportId) { Map<String, Double> result = new TreeMap<String, Double>(); DetachedCriteria criteria = DetachedCriteria.forClass(Transport.class); criteria.add(Restrictions.eq("id", transportId)); criteria.setFetchMode("bookspackages", FetchMode.JOIN); criteria.setFetchMode("bookspackages.truckGroup", FetchMode.JOIN); criteria.setFetchMode("bookspackages.books", FetchMode.JOIN); criteria.setFetchMode("bookspackages.books.boxes", FetchMode.JOIN); Transport transport = (Transport) this.transportDAO.getByDetachedCriteria(criteria); String transportationString = String.format("? %s/%s", transport.getWeekNumber(), transport.getYear());//w ww .java2 s . c o m Set<Bookspackage> bookspackages = transport.getBookspackages(); for (Bookspackage bookspackage : bookspackages) { double totalWeightForTruckGroup = 0; for (Book book : bookspackage.getBooks()) { double weightPerBook = book.getWeightPerBook(); totalWeightForTruckGroup += book.getCount() * weightPerBook; } if (totalWeightForTruckGroup > 0) { double totalWeightForTransport = totalWeightForTruckGroup; if (result.containsKey(transportationString)) { totalWeightForTransport += result.get(transportationString); } result.put(transportationString, totalWeightForTransport); TruckGroup truckGroup = bookspackage.getTruckGroup(); String keyName; if (truckGroup != null) { keyName = bookspackage.getTruckGroup().getName(); } else { keyName = resourceBundleBean.get(ResourceBundleBean.NO_TRUCK_GROUP); } if (result.containsKey(keyName)) { totalWeightForTruckGroup += result.get(keyName); } result.put(keyName, totalWeightForTruckGroup); } } return result; }