javax.persistence.criteria.FetchParent

Here are the examples of the java api class javax.persistence.criteria.FetchParent taken from open source projects.

1. ProductDaoImpl#readProductsByIds()

Project: broadleaf_modify
File: ProductDaoImpl.java
@Override
public List<Product> readProductsByIds(List<Long> productIds) {
    if (productIds == null || productIds.size() == 0) {
        return null;
    }
    if (productIds.size() > 100) {
        logger.warn("Not recommended to use the readProductsByIds method for long lists of productIds, since " + "Hibernate is required to transform the distinct results. The list of requested" + "product ids was (" + productIds.size() + ") in length.");
    }
    // Set up the criteria query that specifies we want to return Products
    CriteriaBuilder builder = em.getCriteriaBuilder();
    CriteriaQuery<Product> criteria = builder.createQuery(Product.class);
    Root<ProductImpl> product = criteria.from(ProductImpl.class);
    FetchParent fetchParent = product.fetch("defaultSku", JoinType.LEFT);
    if (!dialectHelper.isOracle() && !dialectHelper.isSqlServer()) {
        fetchParent.fetch("skuMedia", JoinType.LEFT);
    }
    criteria.select(product);
    // We only want results that match the product IDs
    criteria.where(product.get("id").as(Long.class).in(sandBoxHelper.mergeCloneIds(ProductImpl.class, productIds.toArray(new Long[productIds.size()]))));
    if (!dialectHelper.isOracle() && !dialectHelper.isSqlServer()) {
        criteria.distinct(true);
    }
    TypedQuery<Product> query = em.createQuery(criteria);
    query.setHint(QueryHints.HINT_CACHEABLE, true);
    query.setHint(QueryHints.HINT_CACHE_REGION, "query.Catalog");
    return query.getResultList();
}

2. ProductDaoImpl#readProductsByIds()

Project: BroadleafCommerce
File: ProductDaoImpl.java
@Override
public List<Product> readProductsByIds(List<Long> productIds) {
    if (productIds == null || productIds.size() == 0) {
        return null;
    }
    if (productIds.size() > 100) {
        logger.warn("Not recommended to use the readProductsByIds method for long lists of productIds, since " + "Hibernate is required to transform the distinct results. The list of requested" + "product ids was (" + productIds.size() + ") in length.");
    }
    // Set up the criteria query that specifies we want to return Products
    CriteriaBuilder builder = em.getCriteriaBuilder();
    CriteriaQuery<Product> criteria = builder.createQuery(Product.class);
    Root<ProductImpl> product = criteria.from(ProductImpl.class);
    FetchParent fetchParent = product.fetch("defaultSku", JoinType.LEFT);
    if (!dialectHelper.isOracle() && !dialectHelper.isSqlServer()) {
        fetchParent.fetch("skuMedia", JoinType.LEFT);
    }
    criteria.select(product);
    // We only want results that match the product IDs
    criteria.where(product.get("id").as(Long.class).in(sandBoxHelper.mergeCloneIds(ProductImpl.class, productIds.toArray(new Long[productIds.size()]))));
    if (!dialectHelper.isOracle() && !dialectHelper.isSqlServer()) {
        criteria.distinct(true);
    }
    TypedQuery<Product> query = em.createQuery(criteria);
    query.setHint(QueryHints.HINT_CACHEABLE, true);
    query.setHint(QueryHints.HINT_CACHE_REGION, "query.Catalog");
    return query.getResultList();
}