Example usage for org.hibernate.criterion DetachedCriteria setFetchMode

List of usage examples for org.hibernate.criterion DetachedCriteria setFetchMode

Introduction

In this page you can find the example usage for org.hibernate.criterion DetachedCriteria setFetchMode.

Prototype

public DetachedCriteria setFetchMode(String associationPath, FetchMode mode) 

Source Link

Document

Set the fetch mode for a given association

Usage

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;
}