private String getWholeAssociationPath(CriteriaImpl.Subcriteria subcriteria) { String path = subcriteria.getPath();
@SuppressWarnings("unused") public static boolean isExistAlias(DetachedCriteria impl, String path) { try { Field field = DetachedCriteria.class.getDeclaredField("impl"); field.setAccessible(true); CriteriaImpl criteriaImpl = (CriteriaImpl) field.get(impl); Iterator iterator = criteriaImpl.iterateSubcriteria(); for (; iterator.hasNext(); ) { Subcriteria subcriteria = (Subcriteria) iterator.next(); if (subcriteria.getPath().equals(path)) { return true; } } return false; } catch (Exception e) { return false; } } }
Disjunction d = Restrictions.disjunction(); ... // d is set up here Criteria linkedEntitySubcriteria = null; try { List<CriteriaImpl.Subcriteria> subcriteriaList = (ArrayList) FieldUtils.readField(criteria, "subcriteriaList", true); for (CriteriaImpl.Subcriteria subcriteria : subcriteriaList) { if (subcriteria.getPath().equals(linkedEntityVariable)) { linkedEntitySubcriteria = subcriteria; break; } } } catch (IllegalArgumentException | IllegalAccessException e) { System.out.println("Can't get subcriteria"); } if (linkedEntitySubcriteria == null) { linkedEntitySubcriteria = criteria.createCriteria(linkedEntityVariable); } linkedEntitySubcriteria.add(d);
private String getWholeAssociationPath(CriteriaImpl.Subcriteria subcriteria) { String path = subcriteria.getPath();
private String getWholeAssociationPath(CriteriaImpl.Subcriteria subcriteria) { String path = subcriteria.getPath();
/** * Add a alias for the specified property to the criteria. * * @param property * the property * @return the alias */ protected String addAlias(String property) { Iterator<Subcriteria> subcriteria = ((CriteriaImpl) this.criteria).iterateSubcriteria(); while (subcriteria.hasNext()) { Subcriteria sc = subcriteria.next(); if (sc.getPath() .equals(property)) { return sc.getAlias(); } } String alias = "odf_" + property; if (!this.aliases.contains(alias)) { this.criteria.createAlias(property, alias); this.aliases.add(alias); } return alias; }