Example usage for org.hibernate.criterion CriteriaSpecification LEFT_JOIN

List of usage examples for org.hibernate.criterion CriteriaSpecification LEFT_JOIN

Introduction

In this page you can find the example usage for org.hibernate.criterion CriteriaSpecification LEFT_JOIN.

Prototype

int LEFT_JOIN

To view the source code for org.hibernate.criterion CriteriaSpecification LEFT_JOIN.

Click Source Link

Document

Specifies joining to an entity based on a left outer join.

Usage

From source file:com.abssh.util.GenericDao.java

License:Apache License

@SuppressWarnings("unchecked")
public Page<T> findPageDynamicFetch(final Page<T> page, final List<PropertyFilter> filters,
        final String... lazyObjects) {
    Criteria criteria = getSession().createCriteria(entityClass);
    Map<String, Criteria> criteriaMap = new HashMap<String, Criteria>();
    for (PropertyFilter filter : filters) {
        if (!MatchType.INS.equals(filter.getMatchType())) {
            if (!filter.isMultiProperty()) {
                String propertyName = filter.getPropertyName();
                Object[] propertyValue = filter.getPropertyValue();
                MatchType matchType = filter.getMatchType();
                Criteria parent = findParentCriteria(criteria, propertyName, criteriaMap);
                String[] tmp = StringUtils.split(propertyName, DEF_SEPARATOR);
                parent.add(getCriterion(tmp[tmp.length - 1], propertyValue, matchType));
            } else {
                Disjunction disjunction = Restrictions.disjunction();
                Object[] propertyValue = filter.getPropertyValue();
                MatchType matchType = filter.getMatchType();
                String[] propertyNames = filter.getPropertyNames();
                for (String propertyName : propertyNames) {
                    // Criteria parent = findParentCriteria(criteria,
                    // propertyName, criteriaMap);
                    String[] tmp = StringUtils.split(propertyName, DEF_SEPARATOR);
                    // parent.add(getCriterion(tmp[tmp.length - 1],
                    // propertyValue, matchType));
                    for (int i = 0; i <= tmp.length - 2; i++) {
                        criteria.createAlias(tmp[i], tmp[i], CriteriaSpecification.LEFT_JOIN);
                    }//from w  ww  . j av  a2  s  .c  o m
                    // disjunction.ad
                }
                criteria.add(Restrictions.or(
                        Restrictions.like(propertyNames[0], propertyValue[0].toString(), MatchMode.ANYWHERE),
                        Restrictions.like(propertyNames[1], propertyValue[0].toString(), MatchMode.ANYWHERE)));

                // criteria.add(disjunction);
            }
        } else {
            criteria.add(org.hibernate.criterion.Expression.sql("this_." + filter.getPropertyName() + " in "
                    + String.valueOf(filter.getPropertyValue()[0])));
        }
    }
    if (lazyObjects != null) {
        for (int i = 0; i < lazyObjects.length; i++) {
            criteria.setFetchMode(lazyObjects[i], FetchMode.EAGER);
        }
    }
    if (page != null && page.isAutoCount()) {
        int totalCount = countCriteriaResult(criteria);
        page.setTotalCount(totalCount);
    }
    if (page != null && page.getPageSize() > 0) {
        if (page.getTotalPages() < page.getPageNo()) {
            page.setPageNo(1L);
        }
        criteria.setFirstResult(page.getFirst() - 1);
        criteria.setMaxResults(page.getPageSize());
    }
    if (page != null && page.isOrderBySetted()) {
        String[] orderByArray = StringUtils.split(page.getOrderBy(), ',');
        String[] orderArray = StringUtils.split(page.getOrder(), ',');

        Assert.isTrue(orderByArray.length == orderArray.length, "orderBy and order is not suited!");

        for (int i = 0; i < orderByArray.length; i++) {
            if (orderByArray[i].indexOf(".") > 0) {
                // ???
                if (Page.ASC.equals(orderArray[i])) {
                    Criteria p = criteriaMap
                            .get(orderByArray[i].substring(0, orderByArray[i].lastIndexOf(".")));
                    if (p == null) {
                        p = findParentCriteria(criteria, orderByArray[i], criteriaMap);// ??
                    }
                    p.addOrder(Order.asc(orderByArray[i].substring(orderByArray[i].lastIndexOf(".") + 1)));
                } else {
                    Criteria p = criteriaMap
                            .get(orderByArray[i].substring(0, orderByArray[i].lastIndexOf(".")));
                    if (p == null) {
                        p = findParentCriteria(criteria, orderByArray[i], criteriaMap);// ??
                    }
                    p.addOrder(Order.desc(orderByArray[i].substring(orderByArray[i].lastIndexOf(".") + 1)));
                }
            } else {
                if (Page.ASC.equals(orderArray[i])) {
                    criteria.addOrder(Order.asc(orderByArray[i]));
                } else {
                    criteria.addOrder(Order.desc(orderByArray[i]));
                }
            }
        }
    }

    List result = criteria.list();
    if (page == null) {
        Page p = new Page<T>();
        p.setResult(result);
        p.setTotalCount(result.size());
        p.setPageNo(1L);
        p.setPageSize(result.size());
        return p;
    }
    page.setResult(result);
    return page;
}

From source file:com.abssh.util.GenericDao.java

License:Apache License

/**
 * ?Criteriabulletin.channel.valid,bulletin.channel
 * //from ww  w . j a va2s  .  co  m
 * @return
 */
private Criteria findParentCriteria(Criteria root, String propertyName, Map<String, Criteria> criteriaMap) {
    if (propertyName.indexOf(DEF_SEPARATOR) > 0) {
        String parentName = propertyName.substring(0, propertyName.lastIndexOf(DEF_SEPARATOR));
        Criteria t = criteriaMap.get(parentName);
        if (t == null) {
            Criteria p = findParentCriteria(root, parentName, criteriaMap);
            String[] tmp = StringUtils.split(parentName, DEF_SEPARATOR);
            Criteria c = p.createCriteria(tmp[tmp.length - 1], CriteriaSpecification.LEFT_JOIN);
            criteriaMap.put(parentName, c);
            return c;
        } else {
            return t;
        }
    } else {
        return root;
    }
}

From source file:com.abssh.util.GenericDao.java

License:Apache License

/**
 * [findPageWithOR]  ?/*from   w w  w  .  jav a  2  s. co  m*/
 * 
 * @new date 2012-04-23
 * @param criteria
 * @param propertyName
 * @param criteriaMap
 */
private void createSubCriteria(Criteria criteria, String propertyName, Map<String, Criteria> criteriaMap) {
    if (propertyName.indexOf(DEF_SEPARATOR) > 0) {
        String parentName = propertyName.substring(0, propertyName.indexOf(DEF_SEPARATOR));
        propertyName = propertyName.substring(propertyName.indexOf(DEF_SEPARATOR) + 1);
        Criteria sub = null;
        if (!criteriaMap.containsKey(parentName)) {
            sub = criteria.createAlias(parentName, parentName, CriteriaSpecification.LEFT_JOIN);
            criteriaMap.put(parentName, sub);
        } else {
            sub = criteriaMap.get(parentName);
        }
        createSubCriteria(sub, propertyName, criteriaMap);
    }
}

From source file:com.cimmyt.model.dao.impl.LabStudyDAOImpl.java

License:Apache License

@Override
protected void buildCriteria(DetachedCriteria criteria, LabStudy filter, Integer id) {
    criteria.createAlias("studytemplateid", "tmplate", CriteriaSpecification.LEFT_JOIN)
            .createAlias("status", "st", CriteriaSpecification.LEFT_JOIN)
            .createAlias("project", "proj", CriteriaSpecification.LEFT_JOIN)
            .createAlias("investigatorid", "invest", CriteriaSpecification.LEFT_JOIN);

    if (filter != null && filter.getLabstudyid() != null) {
        criteria.add(Restrictions.eq("labstudyid", filter.getLabstudyid()));
    }//from w  w w .  j av  a 2s.  co m

    if (idstRol != null) {
        switch (idstRol) {
        case ConstantsDNA.ROLE_RESEARCHER:
        case ConstantsDNA.ROLE_RESEARCHER_ASSISTENT:
        case ConstantsDNA.ROLE_ASSISTENT:
            if (filter != null && filter.getInvestigatorid() != null) {
                criteria.add(Restrictions.eq("investigatorid.investigatorid", filter.getInvestigatorid()));
            }
            if (id != null) {
                if (id.intValue() > 0)
                    criteria.add(Restrictions.eq("investigatorid.investigatorid", id));
            }
            break;
        }
    } else {
        if (filter != null && filter.getInvestigatorid() != null) {
            criteria.add(Restrictions.eq("investigatorid.investigatorid", filter.getInvestigatorid()));
        }
    }

    if (filter != null && StrUtils.notEmpty(filter.getTitle())) {
        criteria.add(Restrictions.like("title", "%" + filter.getTitle() + "%"));
    }

    if (filter != null && StrUtils.notEmpty(filter.getPrefix())) {
        criteria.add(Restrictions.like("prefix", filter.getPrefix(), MatchMode.ANYWHERE));
    }

    criteria.addOrder(Order.desc("labstudyid"));
}

From source file:com.cimmyt.model.dao.impl.LabStudyDAOImpl.java

License:Apache License

private void addCriteria(DetachedCriteria criteria, List<DsSearchParam> params,
        boolean useSampleDetailFilters) {
    boolean hasAND = false;
    boolean hasOR = false;

    List<DsSearchParam> paramList = new ArrayList<DsSearchParam>(params);

    criteria.createAlias("project", VALUE_PROJECT)
            .createAlias("investigatorid", "investigator", CriteriaSpecification.LEFT_JOIN)
            .createAlias("season", "season", CriteriaSpecification.LEFT_JOIN)
            .createAlias("location", "location", CriteriaSpecification.LEFT_JOIN);

    if (useSampleDetailFilters)
        criteria.createAlias("sampleDetailCollection", VALUE_SAMPLE, CriteriaSpecification.INNER_JOIN);

    //separates 'OR' from other operators, to use in disjunction
    List<DsSearchParam> orParams = new ArrayList<DsSearchParam>();
    for (DsSearchParam p : paramList) {
        if (p.getOperator().equals(TypeCondition.OR)) {
            orParams.add(p);/*from ww  w  . j a va2  s  .c o  m*/
        }
    }
    paramList.removeAll(orParams);

    String qualifiedParam = null;
    Conjunction conjunction = Restrictions.conjunction();

    for (DsSearchParam param : paramList) {
        hasAND = true;

        qualifiedParam = param.getQualifier();
        DataType dataType = OperatorImp.getType(param.getElement(), param.getQualifier());
        Operator condition = OperatorImp.valueOf(param.getCondition());

        addDynamicCriterion(conjunction, condition, dataType, qualifiedParam, param.getValue());
    }

    Disjunction disjunction = Restrictions.disjunction();
    for (DsSearchParam param : orParams) {
        hasOR = true;

        qualifiedParam = param.getQualifier();
        DataType dataType = OperatorImp.getType(param.getElement(), param.getQualifier());
        Operator condition = OperatorImp.valueOf(param.getCondition());

        addDynamicCriterion(disjunction, condition, dataType, qualifiedParam, param.getValue());
    }

    if (hasAND) {
        if (hasOR) {
            criteria.add(Restrictions.or(conjunction, disjunction));
        } else {
            criteria.add(conjunction);
        }
    } else if (hasOR) {
        criteria.add(disjunction);
    }
}

From source file:com.cimmyt.model.dao.impl.SampleDetailDAOImpl.java

License:Apache License

/**
 * add parameters for project, study and sample
 * *//*from   w w w  .j a v a 2 s.  com*/
private void addCriteria(DetachedCriteria criteria, List<DsSearchParam> params) {
    boolean hasAND = false;
    boolean hasOR = false;

    List<DsSearchParam> paramList = new ArrayList<DsSearchParam>(params);

    criteria.createAlias("labstudyid", Constants.VALUE_STUDY)
            .createAlias("study.project", Constants.VALUE_PROJECT)
            .createAlias("locationid", "location", CriteriaSpecification.LEFT_JOIN)
            .createAlias("seasonid", "season", CriteriaSpecification.LEFT_JOIN)
            .createAlias("study.investigatorid", "investigator", CriteriaSpecification.LEFT_JOIN);

    //separates 'OR' from other operators, to use in disjunction
    List<DsSearchParam> orParams = new ArrayList<DsSearchParam>();
    for (DsSearchParam p : paramList) {

        if (p.getOperator().equals(TypeCondition.OR)) {
            orParams.add(p);
        }
    }
    paramList.removeAll(orParams);

    String qualifiedParam = null;
    Conjunction conjunction = Restrictions.conjunction();

    for (DsSearchParam param : paramList) {
        hasAND = true;

        qualifiedParam = param.getQualifier();
        DataType dataType = OperatorImp.getType(param.getElement(), param.getQualifier());
        Operator condition = OperatorImp.valueOf(param.getCondition());
        addDynamicCriterion(conjunction, condition, dataType, qualifiedParam, param.getValue());

    }

    Disjunction disjunction = Restrictions.disjunction();
    for (DsSearchParam param : orParams) {
        hasOR = true;

        qualifiedParam = param.getQualifier();
        DataType dataType = OperatorImp.getType(param.getElement(), param.getQualifier());
        Operator condition = OperatorImp.valueOf(param.getCondition());

        addDynamicCriterion(disjunction, condition, dataType, qualifiedParam, param.getValue());

    }

    if (hasAND) {
        if (hasOR) {
            criteria.add(Restrictions.or(conjunction, disjunction));
        } else {
            criteria.add(conjunction);
        }
    } else if (hasOR) {
        criteria.add(disjunction);
    }
}

From source file:com.floreantpos.model.dao.MenuGroupDAO.java

License:Open Source License

@SuppressWarnings("unchecked")
public boolean hasChildren(Terminal terminal, MenuGroup group, OrderType orderType) throws PosException {
    Session session = null;/*from  w w  w .j a va 2  s .  c o m*/

    try {
        session = getSession();
        Criteria criteria = session.createCriteria(MenuItem.class);
        criteria.add(Restrictions.eq(MenuItem.PROP_PARENT, group));
        criteria.add(Restrictions.eq(MenuItem.PROP_VISIBLE, Boolean.TRUE));

        //         if(terminal!=null) {
        //            criteria.add(Restrictions.eq(MenuItem., criteria))
        //         }
        criteria.setProjection(Projections.rowCount());

        criteria.createAlias("orderTypeList", "type", CriteriaSpecification.LEFT_JOIN);
        criteria.add(Restrictions.or(Restrictions.isEmpty("orderTypeList"),
                Restrictions.eq("type.id", orderType.getId())));

        int uniqueResult = (Integer) criteria.uniqueResult();

        return uniqueResult > 0;
    } catch (Exception e) {
        e.printStackTrace();
        throw new PosException(Messages.getString("MenuItemDAO.0")); //$NON-NLS-1$
    } finally {
        if (session != null) {
            session.close();
        }
    }
}

From source file:com.floreantpos.model.dao.MenuItemDAO.java

License:Open Source License

public List<MenuItem> findByParent(Terminal terminal, MenuGroup menuGroup, Object selectedOrderType,
        boolean includeInvisibleItems) {
    Session session = null;/*from w w  w.  ja va 2 s .co  m*/
    Criteria criteria = null;
    try {
        session = getSession();
        criteria = session.createCriteria(MenuItem.class);

        if (menuGroup != null) {
            criteria.add(Restrictions.eq(MenuItem.PROP_PARENT, menuGroup));
        }
        criteria.addOrder(Order.asc(MenuItem.PROP_SORT_ORDER));

        if (!includeInvisibleItems) {
            criteria.add(Restrictions.eq(MenuItem.PROP_VISIBLE, Boolean.TRUE));
        }

        if (selectedOrderType instanceof OrderType) {
            OrderType orderType = (OrderType) selectedOrderType;
            criteria.createAlias("orderTypeList", "type", CriteriaSpecification.LEFT_JOIN);
            criteria.add(Restrictions.or(Restrictions.isEmpty("orderTypeList"),
                    Restrictions.eq("type.id", orderType.getId())));
        }
        return criteria.list();

    } catch (Exception e) {
    }
    return criteria.list();
}

From source file:com.hyzy.core.orm.hibernate.SimpleHibernateDao.java

License:Apache License

protected Criteria createAlias(Criteria criteria, String... aliasBeans) {
    if (aliasBeans != null && aliasBeans.length > 0) {
        for (int i = 0; i < aliasBeans.length; i++) {
            criteria.createAlias(aliasBeans[i], aliasBeans[i], CriteriaSpecification.LEFT_JOIN);
        }//from ww  w. jav  a  2s  . c  om
    }
    return criteria;
}

From source file:com.ibm.asset.trails.dao.jpa.VSoftwareLparDAOJpa.java

@Override
public Long total(Account account, ReconSetting reconSetting) {
    // TODO Auto-generated method stub
    Criteria criteria = getHibernateSessionCriteria();

    criteria.createAlias("hardwareLpar", "hl")
            .createAlias("hl.hardwareLparEff", "hle", CriteriaSpecification.LEFT_JOIN)
            .createAlias("hl.hardware", "h").createAlias("h.machineType", "mt")
            .createAlias("installedSoftwares", "is")
            .createAlias("is.scheduleF", "sf", CriteriaSpecification.LEFT_JOIN)
            .createAlias("sf.scope", "scope", CriteriaSpecification.LEFT_JOIN)
            .createAlias("is.softwareLpar", "sl").createAlias("is.alert", "aus")
            .createAlias("aus.reconcile", "r", CriteriaSpecification.LEFT_JOIN)
            .createAlias("r.usedLicenses", "ul", CriteriaSpecification.LEFT_JOIN)
            .createAlias("ul.license", "license", CriteriaSpecification.LEFT_JOIN)
            .createAlias("r.reconcileType", "rt", CriteriaSpecification.LEFT_JOIN)
            .createAlias("is.software", "sw").add(Restrictions.eq("account", account));

    if (reconSetting.getReconcileType() != null) {
        criteria.add(Restrictions.eq("rt.id", reconSetting.getReconcileType()));
    }//from w ww  .j av  a2  s.c o m

    if (StringUtils.isNotBlank(reconSetting.getAlertStatus())) {
        boolean open = false;
        if (reconSetting.getAlertStatus().equals("OPEN")) {
            open = true;
            criteria.add(Restrictions.eq("aus.open", open));
        } else {
            criteria.add(Restrictions.and(Restrictions.eq("aus.open", false),
                    Restrictions.eqProperty("is.id", "r.installedSoftware.id")));
        }

    } else {
        criteria.add(Restrictions.or(Restrictions.eq("aus.open", true),
                Restrictions.and(Restrictions.eq("aus.open", false),
                        Restrictions.eqProperty("is.id", "r.installedSoftware.id"))));
    }

    if (null != reconSetting.getAlertFrom() && reconSetting.getAlertFrom().intValue() >= 0) {
        criteria.add(Restrictions.ge("aus.alertAge", reconSetting.getAlertFrom()));
    }

    if (null != reconSetting.getAlertTo() && reconSetting.getAlertTo().intValue() >= 0) {
        criteria.add(Restrictions.le("aus.alertAge", reconSetting.getAlertTo()));
    }

    if (StringUtils.isNotBlank(reconSetting.getAssigned())) {
        if (reconSetting.getAssigned().equals("Assigned")) {
            criteria.add(Restrictions.ne("aus.remoteUser", "STAGING"));
        }
        if (reconSetting.getAssigned().equals("Unassigned")) {
            criteria.add(Restrictions.eq("aus.remoteUser", "STAGING"));
        }
    }

    if (StringUtils.isNotBlank(reconSetting.getAssignee())) {
        criteria.add(Restrictions.eq("aus.remoteUser", reconSetting.getAssignee()).ignoreCase());
    }

    if (StringUtils.isNotBlank(reconSetting.getOwner())) {
        if (reconSetting.getOwner().equalsIgnoreCase("IBM")) {
            criteria.add(Restrictions.eq("h.owner", reconSetting.getOwner()).ignoreCase());
        } else if (reconSetting.getOwner().equalsIgnoreCase("Customer")) {
            ArrayList<String> lalOwner = new ArrayList<String>();

            lalOwner.add("CUST");
            lalOwner.add("CUSTO");
            criteria.add(Restrictions.in("h.owner", lalOwner));
        }
    }

    // I'm not sure why the heck we aren't just getting a list of strings?
    if (reconSetting.getCountries().length > 0) {
        List<String> list = new ArrayList<String>();
        for (int i = 0; i < reconSetting.getCountries().length; i++) {
            if (StringUtils.isNotBlank(reconSetting.getCountries()[i])) {
                list.add(reconSetting.getCountries()[i].toUpperCase());
            }
        }

        if (list.size() > 0) {
            criteria.add(Restrictions.in("h.country", list));
        }
    }

    if (reconSetting.getNames().length > 0) {
        List<String> list = new ArrayList<String>();
        for (int i = 0; i < reconSetting.getNames().length; i++) {
            if (StringUtils.isNotBlank(reconSetting.getNames()[i])) {
                list.add(reconSetting.getNames()[i].toUpperCase());
            }
        }

        if (list.size() > 0) {
            criteria.add(Restrictions.in("hl.name", list));
        }
    }

    if (reconSetting.getSwcmIDs().length > 0) {
        List<String> list = new ArrayList<String>();
        for (int i = 0; i < reconSetting.getSwcmIDs().length; i++) {
            if (StringUtils.isNotBlank(reconSetting.getSwcmIDs()[i])) {
                list.add(reconSetting.getSwcmIDs()[i].toUpperCase());
            }
        }
        if (list.size() > 0) {
            criteria.add(Restrictions.in("license.extSrcId", list));
        }
    }

    if (reconSetting.getSerialNumbers().length > 0) {
        List<String> list = new ArrayList<String>();
        for (int i = 0; i < reconSetting.getSerialNumbers().length; i++) {
            if (StringUtils.isNotBlank(reconSetting.getSerialNumbers()[i])) {
                list.add(reconSetting.getSerialNumbers()[i].toUpperCase());
            }
        }

        if (list.size() > 0) {
            criteria.add(Restrictions.in("h.serial", list));
        }
    }

    if (reconSetting.getProductInfoNames().length > 0) {
        List<String> list = new ArrayList<String>();
        for (int i = 0; i < reconSetting.getProductInfoNames().length; i++) {
            if (StringUtils.isNotBlank(reconSetting.getProductInfoNames()[i])) {
                list.add(reconSetting.getProductInfoNames()[i]);
            }
        }

        if (list.size() > 0) {
            criteria.add(Restrictions.in("sw.softwareName", list));
        }
    }

    if (StringUtils.isNotBlank(reconSetting.getScope())) {
        if ("Not specified".equalsIgnoreCase(reconSetting.getScope())) {
            criteria.add(Restrictions.isNull("scope.description"));
        } else {
            criteria.add(Restrictions.eq("scope.description", reconSetting.getScope()));
        }
    }

    if (StringUtils.isNotBlank(reconSetting.getFinanResp())) {
        if ("Not Specified".trim().equalsIgnoreCase(reconSetting.getFinanResp())) {
            criteria.add(Restrictions.isNull("sf.SWFinanceResp"));
        } else {
            criteria.add(Restrictions.eq("sf.SWFinanceResp", reconSetting.getFinanResp()));
        }
    }

    criteria.setProjection(Projections.projectionList().add(Projections.rowCount()));

    Long total = (Long) criteria.uniqueResult();
    return total;
}