List of usage examples for org.hibernate.criterion Restrictions conjunction
public static Conjunction conjunction()
From source file:org.eurocarbdb.resourcesdb.io.HibernateAccess.java
License:Open Source License
@SuppressWarnings("unchecked") public static List<Monosaccharide> getMonosaccharideListByAliasName(String aliasname, GlycanNamescheme scheme) { List<Monosaccharide> msList = null; Session session = HibernateUtil.getSessionFactory().getCurrentSession(); Transaction tx = session.beginTransaction(); try {/*from ww w .j ava2s .c o m*/ //*** prepare query: *** Criteria query = session.createCriteria(Monosaccharide.class); query.createAlias("synonyms", "alias"); //*** add restrictions: *** Conjunction monoJunc = Restrictions.conjunction(); query.add(monoJunc); if (scheme == null || scheme.isCaseSensitive()) { monoJunc.add(Restrictions.like("alias.name", aliasname)); } else { monoJunc.add(Restrictions.ilike("alias.name", aliasname)); } if (scheme != null && !scheme.equals(GlycanNamescheme.AUTO)) { monoJunc.add(Restrictions.eq("alias.nameschemeStr", scheme.name())); } //*** add "distinct": *** query.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); //*** perform query: *** msList = (List<Monosaccharide>) query.list(); } catch (Exception e) { tx.rollback(); } return (msList); }
From source file:org.fornax.cartridges.sculptor.framework.accessimpl.jpahibernate.JpaHibFindByConditionAccessImpl.java
License:Apache License
private Criterion makeCriterion(ConditionalCriteria crit) { if (crit == null) { return null; }/*from w w w.ja v a 2 s . c o m*/ ConditionalCriteria.Operator operator = crit.getOperator(); if (Operator.Equal.equals(operator)) { return Restrictions.eq(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant()); } else if (Operator.IgnoreCaseEqual.equals(operator)) { return Restrictions.eq(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant()) .ignoreCase(); } else if (Operator.LessThan.equals(operator)) { return Restrictions.lt(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant()); } else if (Operator.LessThanOrEqual.equals(operator)) { return Restrictions.le(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant()); } else if (Operator.GreatThan.equals(operator)) { return Restrictions.gt(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant()); } else if (Operator.GreatThanOrEqual.equals(operator)) { return Restrictions.ge(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant()); } else if (Operator.Like.equals(operator)) { return Restrictions.like(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant()); } else if (Operator.IgnoreCaseLike.equals(operator)) { return Restrictions.ilike(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant()); } else if (Operator.IsNull.equals(operator)) { return Restrictions.isNull(makePathWithAlias(crit.getPropertyFullName())); } else if (Operator.IsNotNull.equals(operator)) { return Restrictions.isNotNull(makePathWithAlias(crit.getPropertyFullName())); } else if (Operator.IsEmpty.equals(operator)) { return Restrictions.isEmpty(makePathWithAlias(crit.getPropertyFullName())); } else if (Operator.IsNotEmpty.equals(operator)) { return Restrictions.isNotEmpty(makePathWithAlias(crit.getPropertyFullName())); } else if (Operator.Not.equals(operator)) { return Restrictions.not(makeCriterion((ConditionalCriteria) crit.getFirstOperant())); } else if (Operator.Or.equals(operator) && crit.getFirstOperant() instanceof List<?>) { Disjunction disj = Restrictions.disjunction(); List<?> disjList = (List<?>) crit.getFirstOperant(); for (Object disjPart : disjList) { disj.add(makeCriterion((ConditionalCriteria) disjPart)); } return disj; } else if (Operator.Or.equals(operator)) { return Restrictions.or(makeCriterion((ConditionalCriteria) crit.getFirstOperant()), makeCriterion((ConditionalCriteria) crit.getSecondOperant())); } else if (Operator.And.equals(operator) && crit.getFirstOperant() instanceof List<?>) { Conjunction conj = Restrictions.conjunction(); List<?> conjList = (List<?>) crit.getFirstOperant(); for (Object conjPart : conjList) { conj.add(makeCriterion((ConditionalCriteria) conjPart)); } return conj; } else if (Operator.And.equals(operator)) { return Restrictions.and(makeCriterion((ConditionalCriteria) crit.getFirstOperant()), makeCriterion((ConditionalCriteria) crit.getSecondOperant())); } else if (Operator.In.equals(operator)) { if (crit.getFirstOperant() instanceof Collection<?>) { return Restrictions.in(makePathWithAlias(crit.getPropertyFullName()), (Collection<?>) crit.getFirstOperant()); } else { return Restrictions.in(makePathWithAlias(crit.getPropertyFullName()), (Object[]) crit.getFirstOperant()); } } else if (Operator.Between.equals(operator)) { return Restrictions.between(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant(), crit.getSecondOperant()); } else if (Operator.DistinctRoot.equals(operator)) { realDistinctRoot = true; return null; } else if (Operator.ProjectionRoot.equals(operator)) { resultTransformer = Criteria.PROJECTION; return null; } else if (Operator.EqualProperty.equals(operator)) { return Restrictions.eqProperty(makePathWithAlias(crit.getPropertyFullName()), (String) crit.getFirstOperant()); } else if (Operator.LessThanProperty.equals(operator)) { return Restrictions.eqProperty(makePathWithAlias(crit.getPropertyFullName()), (String) crit.getFirstOperant()); } else if (Operator.LessThanOrEqualProperty.equals(operator)) { return Restrictions.eqProperty(makePathWithAlias(crit.getPropertyFullName()), (String) crit.getFirstOperant()); } else if (Operator.GreatThanProperty.equals(operator)) { return Restrictions.eqProperty(makePathWithAlias(crit.getPropertyFullName()), (String) crit.getFirstOperant()); } else if (Operator.GreatThanOrEqualProperty.equals(operator)) { return Restrictions.eqProperty(makePathWithAlias(crit.getPropertyFullName()), (String) crit.getFirstOperant()); } else { return null; } }
From source file:org.geomajas.layer.hibernate.CriteriaVisitor.java
License:Open Source License
/** {@inheritDoc} */ @Override public Object visit(ExcludeFilter filter, Object userData) { return Restrictions.not(Restrictions.conjunction()); }
From source file:org.geomajas.layer.hibernate.CriteriaVisitor.java
License:Open Source License
/** {@inheritDoc} */ @Override public Object visit(IncludeFilter filter, Object userData) { return Restrictions.conjunction(); }
From source file:org.goobi.production.flow.statistics.hibernate.FilterHelper.java
License:Open Source License
/** * Filter processes for steps name with given status. * * @param inStatus//from w ww. j a v a2 s . c o m * {@link TaskStatus} of searched step * @param parameters * part of filter string to use */ protected static void filterStepName(Conjunction con, String parameters, TaskStatus inStatus, boolean negate, String prefix) { if (con == null) { con = Restrictions.conjunction(); } if (!negate) { con.add(Restrictions.and(Restrictions.like(prefix + "title", "%" + parameters + "%"), Restrictions.eq(prefix + "processingStatus", inStatus.getValue()))); } else { con.add(Restrictions.not(Restrictions.and(Restrictions.like(prefix + "title", "%" + parameters + "%"), Restrictions.eq(prefix + "processingStatus", inStatus.getValue())))); } }
From source file:org.goobi.production.flow.statistics.hibernate.FilterHelper.java
License:Open Source License
/** * Filter processes for steps name with given status. * *//*from www .j a v a 2 s.c o m*/ protected static void filterAutomaticSteps(Conjunction con, String tok, boolean flagSteps) { if (con == null) { con = Restrictions.conjunction(); } if (!flagSteps) { if (tok.substring(tok.indexOf(":") + 1).equalsIgnoreCase("true")) { con.add(Restrictions.eq("steps.typeAutomatic", true)); } else { con.add(Restrictions.eq("steps.typeAutomatic", false)); } } else { if (tok.substring(tok.indexOf(":") + 1).equalsIgnoreCase("true")) { con.add(Restrictions.eq("typeAutomatic", true)); } else { con.add(Restrictions.eq("typeAutomatic", false)); } } }
From source file:org.goobi.production.flow.statistics.hibernate.FilterHelper.java
License:Open Source License
/** * Filter processes for done steps min./*from ww w .j a va 2 s .c o m*/ * * @param parameters * part of filter string to use * @param inStatus * {@link TaskStatus} of searched step */ protected static void filterStepMin(Conjunction con, String parameters, TaskStatus inStatus, boolean negate, String prefix) { if (con == null) { con = Restrictions.conjunction(); } if (!negate) { con.add(Restrictions.and(Restrictions.ge(prefix + "ordering", FilterHelper.getStepStart(parameters)), Restrictions.eq(prefix + "processingStatus", inStatus.getValue()))); } else { con.add(Restrictions.not( Restrictions.and(Restrictions.ge(prefix + "ordering", FilterHelper.getStepStart(parameters)), Restrictions.eq(prefix + "processingStatus", inStatus.getValue())))); } }
From source file:org.goobi.production.flow.statistics.hibernate.FilterHelper.java
License:Open Source License
/** * Filter processes for done steps max./*w w w. j a va2 s .c o m*/ * * @param parameters * part of filter string to use * @param inStatus * {@link TaskStatus} of searched step */ protected static void filterStepMax(Conjunction con, String parameters, TaskStatus inStatus, boolean negate, String prefix) { if (con == null) { con = Restrictions.conjunction(); } if (!negate) { con.add(Restrictions.and(Restrictions.le(prefix + "ordering", FilterHelper.getStepEnd(parameters)), Restrictions.eq(prefix + "processingStatus", inStatus.getValue()))); } else { con.add(Restrictions .not(Restrictions.and(Restrictions.le(prefix + "ordering", FilterHelper.getStepEnd(parameters)), Restrictions.eq(prefix + "processingStatus", inStatus.getValue())))); } }
From source file:org.goobi.production.flow.statistics.hibernate.FilterHelper.java
License:Open Source License
/** * This method builds a criteria depending on a filter string and some other * parameters passed on along the initial criteria. The filter is parsed and * depending on which data structures are used for applying filtering * restrictions conjunctions are formed and collect the restrictions and * then will be applied on the corresponding criteria. A criteria is only * added if needed for the presence of filters applying to it. * * @param inFilter/* ww w.jav a2 s . c o m*/ * String * @param crit * PaginatingCriteria object * @param isTemplate * Boolean * @param returnParameters * Object containing values which need to be set and returned to * UserDefinedFilter * @param userAssignedStepsOnly * Boolean * @param stepOpenOnly * boolean * @return String used to pass on error messages about errors in the filter * expression */ public static String criteriaBuilder(Session session, String inFilter, PaginatingCriteria crit, Boolean isTemplate, Parameters returnParameters, Boolean stepOpenOnly, Boolean userAssignedStepsOnly, boolean clearSession) { if (ConfigCore.getBooleanParameter("DatabaseAutomaticRefreshList", true) && clearSession) { session.clear(); } // for ordering the lists there are some // criteria, which needs to be added even no // restrictions apply, to avoid multiple analysis // of the criteria it is only done here once and // to set flags which are subsequently used Boolean flagSteps = false; Boolean flagProcesses = false; @SuppressWarnings("unused") Boolean flagSetCritProjects = false; String filterPrefix = ""; if (crit.getClassName().equals(Process.class.getName())) { flagProcesses = true; filterPrefix = "steps."; } if (crit.getClassName().equals(Task.class.getName())) { flagSteps = true; } // keeping a reference to the passed criteria Criteria inCrit = crit; @SuppressWarnings("unused") Criteria critProject = null; Criteria critProcess = null; // to collect and return feedback about erroneous use of filter // expressions String message = ""; StrTokenizer tokenizer = new StrTokenizer(inFilter, ' ', '\"'); // conjunctions collecting conditions Conjunction conjWorkPiece = null; Conjunction conjProjects = null; Conjunction conjSteps = null; Conjunction conjProcesses = null; Conjunction conjTemplates = null; Conjunction conjUsers = null; Conjunction conjProcessProperties = null; Conjunction conjBatches = null; // this is needed if we filter processes if (flagProcesses) { conjProjects = Restrictions.conjunction(); limitToUserAccessRights(conjProjects); // in case nothing is set here it needs to be removed again // happens if user has admin rights if (conjProjects.toString().equals("()")) { conjProjects = null; flagSetCritProjects = true; } } // this is needed if we filter steps if (flagSteps) { conjSteps = Restrictions.conjunction(); limitToUserAssignedSteps(conjSteps, stepOpenOnly, userAssignedStepsOnly); // in case nothing is set here conjunction needs to be set to null // again if (conjSteps.toString().equals("()")) { conjSteps = null; } } // this is needed for the template filter (true) and the undefined // processes filter (false) in any other case it needs to be null if (isTemplate != null) { conjProcesses = Restrictions.conjunction(); if (!isTemplate) { conjProcesses.add(Restrictions.eq("template", Boolean.FALSE)); } else { conjProcesses.add(Restrictions.eq("template", Boolean.TRUE)); } } // this is needed for evaluating a filter string while (tokenizer.hasNext()) { String tok = tokenizer.nextToken().trim(); String tokLowerCase = tok.toLowerCase(Locale.GERMANY); if (tokLowerCase.startsWith(FilterString.PROCESSPROPERTY) || tokLowerCase.startsWith(FilterString.PROZESSEIGENSCHAFT)) { if (conjProcessProperties == null) { conjProcessProperties = Restrictions.conjunction(); } FilterHelper.filterProcessProperty(conjProcessProperties, tok, false); } // search over steps // original filter, is left here for compatibility reason // doesn't fit into new keyword scheme else if (tokLowerCase.startsWith(FilterString.STEP) || tokLowerCase.startsWith(FilterString.SCHRITT)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } message = message + createHistoricFilter(conjSteps, tok, flagSteps); } else if (tokLowerCase.startsWith(FilterString.STEPINWORK) || tokLowerCase.startsWith(FilterString.SCHRITTINARBEIT)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.INWORK, false, filterPrefix)); // new keyword stepLocked implemented } else if (tokLowerCase.startsWith(FilterString.STEPLOCKED) || tokLowerCase.startsWith(FilterString.SCHRITTINARBEIT)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.LOCKED, false, filterPrefix)); // new keyword stepOpen implemented } else if (tokLowerCase.startsWith(FilterString.STEPOPEN) || tokLowerCase.startsWith(FilterString.SCHRITTOFFEN)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.OPEN, false, filterPrefix)); // new keyword stepDone implemented } else if (tokLowerCase.startsWith(FilterString.STEPDONE) || tokLowerCase.startsWith(FilterString.SCHRITTABGESCHLOSSEN)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.DONE, false, filterPrefix)); // new keyword stepDoneTitle implemented, replacing so far // undocumented } else if (tokLowerCase.startsWith(FilterString.STEPDONETITLE) || tokLowerCase.startsWith(FilterString.ABGESCHLOSSENERSCHRITTTITEL)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } String stepTitel = tok.substring(tok.indexOf(":") + 1); FilterHelper.filterStepName(conjSteps, stepTitel, TaskStatus.DONE, false, filterPrefix); } else if ((tokLowerCase.startsWith(FilterString.STEPDONEUSER) || tokLowerCase.startsWith(FilterString.ABGESCHLOSSENERSCHRITTBENUTZER)) && ConfigCore.getBooleanParameter("withUserStepDoneSearch")) { if (conjUsers == null) { conjUsers = Restrictions.conjunction(); } FilterHelper.filterStepDoneUser(conjUsers, tok); } else if (tokLowerCase.startsWith(FilterString.STEPAUTOMATIC) || tokLowerCase.startsWith(FilterString.SCHRITTAUTOMATISCH)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } FilterHelper.filterAutomaticSteps(conjSteps, tok, flagSteps); } else if (tokLowerCase.startsWith(FilterString.PROJECT) || tokLowerCase.startsWith(FilterString.PROJEKT)) { if (conjProjects == null) { conjProjects = Restrictions.conjunction(); } FilterHelper.filterProject(conjProjects, tok, false); } else if (tokLowerCase.startsWith(FilterString.TEMPLATE) || tokLowerCase.startsWith(FilterString.VORLAGE)) { if (conjTemplates == null) { conjTemplates = Restrictions.conjunction(); } FilterHelper.filterScanTemplate(conjTemplates, tok, false); } else if (tokLowerCase.startsWith(FilterString.ID)) { if (conjProcesses == null) { conjProcesses = Restrictions.conjunction(); } FilterHelper.filterIds(conjProcesses, tok); } else if (tokLowerCase.startsWith(FilterString.PROCESS) || tokLowerCase.startsWith(FilterString.PROZESS)) { if (conjProcesses == null) { conjProcesses = Restrictions.conjunction(); } conjProcesses .add(Restrictions.like("title", "%" + "proc:" + tok.substring(tok.indexOf(":") + 1) + "%")); } else if (tokLowerCase.startsWith(FilterString.BATCH) || tokLowerCase.startsWith(FilterString.GRUPPE)) { if (conjBatches == null) { conjBatches = Restrictions.conjunction(); } int value = Integer.parseInt(tok.substring(tok.indexOf(":") + 1)); conjBatches.add(Restrictions.eq("bat.id", value)); } else if (tokLowerCase.startsWith(FilterString.WORKPIECE) || tokLowerCase.startsWith(FilterString.WERKSTUECK)) { if (conjWorkPiece == null) { conjWorkPiece = Restrictions.conjunction(); } FilterHelper.filterWorkpiece(conjWorkPiece, tok, false); } else if (tokLowerCase.startsWith("-" + FilterString.PROCESSPROPERTY) || tokLowerCase.startsWith("-" + FilterString.PROZESSEIGENSCHAFT)) { if (conjProcessProperties == null) { conjProcessProperties = Restrictions.conjunction(); } FilterHelper.filterProcessProperty(conjProcessProperties, tok, true); } else if (tokLowerCase.startsWith("-" + FilterString.STEPINWORK) || tokLowerCase.startsWith("-" + FilterString.SCHRITTINARBEIT)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.INWORK, true, filterPrefix)); // new keyword stepLocked implemented } else if (tokLowerCase.startsWith("-" + FilterString.STEPLOCKED) || tokLowerCase.startsWith("-" + FilterString.SCHRITTGESPERRT)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.LOCKED, true, filterPrefix)); // new keyword stepOpen implemented } else if (tokLowerCase.startsWith("-" + FilterString.STEPOPEN) || tokLowerCase.startsWith("-" + FilterString.SCHRITTOFFEN)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.OPEN, true, filterPrefix)); // new keyword stepDone implemented } else if (tokLowerCase.startsWith("-" + FilterString.STEPDONE) || tokLowerCase.startsWith("-" + FilterString.SCHRITTABGESCHLOSSEN)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.DONE, true, filterPrefix)); // new keyword stepDoneTitle implemented, replacing so far // undocumented } else if (tokLowerCase.startsWith("-" + FilterString.STEPDONETITLE) || tokLowerCase.startsWith("-" + FilterString.ABGESCHLOSSENERSCHRITTTITEL)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } String stepTitel = tok.substring(tok.indexOf(":") + 1); FilterHelper.filterStepName(conjSteps, stepTitel, TaskStatus.DONE, true, filterPrefix); } else if (tokLowerCase.startsWith("-" + FilterString.PROJECT) || tokLowerCase.startsWith("-" + FilterString.PROJEKT)) { if (conjProjects == null) { conjProjects = Restrictions.conjunction(); } FilterHelper.filterProject(conjProjects, tok, true); } else if (tokLowerCase.startsWith("-" + FilterString.TEMPLATE) || tokLowerCase.startsWith("-" + FilterString.VORLAGE)) { if (conjTemplates == null) { conjTemplates = Restrictions.conjunction(); } FilterHelper.filterScanTemplate(conjTemplates, tok, true); } else if (tokLowerCase.startsWith("-" + FilterString.WORKPIECE) || tokLowerCase.startsWith("-" + FilterString.WERKSTUECK)) { if (conjWorkPiece == null) { conjWorkPiece = Restrictions.conjunction(); } FilterHelper.filterWorkpiece(conjWorkPiece, tok, true); } else if (tokLowerCase.startsWith("-")) { if (conjProcesses == null) { conjProcesses = Restrictions.conjunction(); } conjProcesses.add(Restrictions.not(Restrictions.like("title", "%" + tok.substring(1) + "%"))); } else { /* standard-search parameter */ if (conjProcesses == null) { conjProcesses = Restrictions.conjunction(); } conjProcesses.add(IlikeExpression.ilike("title", "*" + tok + "*", '!')); } } if (conjProcesses != null || flagSteps) { if (!flagProcesses) { critProcess = crit.createCriteria("process", "proc"); if (conjProcesses != null) { critProcess.add(conjProcesses); } } else { if (conjProcesses != null) { inCrit.add(conjProcesses); } } } if (flagSteps) { critProject = critProcess.createCriteria("project", "proj"); if (conjProjects != null) { inCrit.add(conjProjects); } } else { inCrit.createCriteria("project", "proj"); if (conjProjects != null) { inCrit.add(conjProjects); } } if (conjSteps != null) { if (!flagSteps) { crit.createCriteria("tasks", "steps"); crit.add(conjSteps); } else { inCrit.add(conjSteps); } } if (conjTemplates != null) { if (flagSteps) { critProcess.createCriteria("templates", "vorl"); critProcess.createAlias("vorl.eigenschaften", "vorleig"); critProcess.add(conjTemplates); } else { crit.createCriteria("templates", "vorl"); crit.createAlias("vorl.eigenschaften", "vorleig"); inCrit.add(conjTemplates); } } if (conjProcessProperties != null) { if (flagSteps) { critProcess.createAlias("proc.eigenschaften", "prozesseig"); critProcess.add(conjProcessProperties); } else { inCrit.createAlias("properties", "prozesseig"); inCrit.add(conjProcessProperties); } } if (conjWorkPiece != null) { if (flagSteps) { critProcess.createCriteria("workpiece", "werk"); critProcess.createAlias("werk.eigenschaften", "werkeig"); critProcess.add(conjWorkPiece); } else { inCrit.createCriteria("workpiece", "werk"); inCrit.createAlias("werk.eigenschaften", "werkeig"); inCrit.add(conjWorkPiece); } } if (conjUsers != null) { if (flagSteps) { critProcess.createCriteria("processingUser", "processingUser"); critProcess.add(conjUsers); } else { inCrit.createAlias("steps.processingUser", "processingUser"); inCrit.add(conjUsers); } } if (conjBatches != null) { if (flagSteps) { critProcess.createCriteria("batches", "bat"); critProcess.add(conjBatches); } else { crit.createCriteria("batches", "bat"); inCrit.add(conjBatches); } } return message; }
From source file:org.grails.orm.hibernate.query.AbstractHibernateCriterionAdapter.java
License:Apache License
protected void addAssociationQueryCriterionAdapters() { criterionAdaptors.put(DetachedAssociationCriteria.class, new CriterionAdaptor() { @Override//from w w w . j a v a2s.c om public Criterion toHibernateCriterion(AbstractHibernateQuery hibernateQuery, Query.Criterion criterion, String alias) { DetachedAssociationCriteria<?> existing = (DetachedAssociationCriteria<?>) criterion; if (alias == null) alias = existing.getAlias(); alias = hibernateQuery.handleAssociationQuery(existing.getAssociation(), existing.getCriteria(), alias); Junction conjunction = Restrictions.conjunction(); applySubCriteriaToJunction(existing.getAssociation().getAssociatedEntity(), hibernateQuery, existing.getCriteria(), conjunction, alias); return conjunction; } }); criterionAdaptors.put(AssociationQuery.class, new CriterionAdaptor() { @Override public Criterion toHibernateCriterion(AbstractHibernateQuery hibernateQuery, Query.Criterion criterion, String alias) { AssociationQuery existing = (AssociationQuery) criterion; Junction conjunction = Restrictions.conjunction(); String newAlias = hibernateQuery.handleAssociationQuery(existing.getAssociation(), existing.getCriteria().getCriteria()); if (alias == null) { alias = newAlias; } else { alias += '.' + newAlias; } applySubCriteriaToJunction(existing.getAssociation().getAssociatedEntity(), hibernateQuery, existing.getCriteria().getCriteria(), conjunction, alias); return conjunction; } }); }