List of usage examples for org.hibernate.criterion CriteriaSpecification LEFT_JOIN
int LEFT_JOIN
To view the source code for org.hibernate.criterion CriteriaSpecification LEFT_JOIN.
Click Source Link
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; }