/** * Adds a JPA Subquery to the predicates. * * @param subquery the subquery to add. */ void addExistsSubquery(Subquery<?> subquery) { predicates.add(builder.exists(subquery)); }
/** * Adds a JPA Subquery to the predicates. * * @param subquery the subquery to add. */ void addNotExistsSubquery(Subquery<?> subquery) { predicates.add(builder.not( builder.exists(subquery)) ); }
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Dual> cq = cb.createQuery(Dual.class); Subquery<ProtokollSatz> sq = cq.subquery(ProtokollSatz.class); Root<ProtokollSatz> root1 = sq.from(ProtokollSatz.class); sq.where( cb.and( cb.equal(root1.<Integer> get("field1"), Integer.valueOf(field1)), cb.equal(root1.<Integer> get("field2"), Integer.valueOf(field2)))); cq.where(cb.exists(sq)); TypedQuery<Dual> query = em.createQuery(cq); boolean ifExists = query.getResultList().size() > 0;
/** * {@inheritDoc} * @see br.com.perolasoftware.framework.components.annotationfilter.operation.helper.OperationHelper#getPredicate(CriteriaQuery, Path, Expression, Object, Field, Collection) */ @Override public Predicate getPredicate(CriteriaQuery<?> query, Path<?> path, Expression<?> atributeEntity, Object valueFilter,Field atributeFilter, Collection<Annotation> attributesAggregators) { return getEntityManager().getCriteriaBuilder().exists((Subquery<?>) valueFilter); }
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder(); CriteriaQuery<Boolean> query = criteriaBuilder.createQuery(Boolean.class); query.from(dual.class); query.select(criteriaBuilder.literal(true)); Subquery<Location> subquery = query.subquery(Location.class); Root<Location> subRootEntity = subquery.from(Location.class); subquery.select(subRootEntity); Path<?> attributePath = subRootEntity.get("State"); Predicate predicate = criteriaBuilder.equal(attributePath, criteriaBuilder.literal("TX")); subquery.where(predicate); query.where(criteriaBuilder.exists(subquery)); TypedQuery<Boolean> typedQuery = em.createQuery(query);
/** * Add a Field Search Condition that will check if the result of a subquery exists. * * @param subquery The subquery to check if it's result exists. */ protected void addExistsCondition(final Subquery<?> subquery) { addFieldCondition(getCriteriaBuilder().exists(subquery)); }
@SuppressWarnings("unchecked") @Override public Expression<Boolean> get() throws ODataApplicationException { // return converter.cb.greaterThan(getExistsQuery().as("a"), converter.cb.literal('5')); //NOSONAR if (aggregationType != null) return (Expression<Boolean>) getExistsQuery().getRoots().toArray()[0]; return converter.cb.exists(getExistsQuery()); }
@Override public Predicate toPredicate(Root<Privilege> root, CriteriaQuery<?> query, CriteriaBuilder builder) { Predicate predicate = buildPredicatesFromFilters(groupFilter, root, query, builder); Subquery<RoleR2Privilege> sq = query.subquery(RoleR2Privilege.class); Root<RoleR2Privilege> r2 = sq.from(RoleR2Privilege.class); sq.where(builder.equal(r2.get("privilege"), root), builder.equal(r2.get("role").get("id"), roleId)).select(r2); return builder.and(predicate, builder.not(builder.exists(sq))); } };
@Override public Predicate getMatchingLocaleString(final String locale) { final CriteriaBuilder criteriaBuilder = getCriteriaBuilder(); final Subquery<LanguageImage> subquery = getCriteriaQuery().subquery(LanguageImage.class); final Root<LanguageImage> from = subquery.from(LanguageImage.class); final Predicate languageImageEqual = criteriaBuilder.equal(getRootPath(), from.get("imageFile")); final Predicate localeEqual = criteriaBuilder.equal(from.get("locale").get("value"), locale); subquery.where(criteriaBuilder.and(languageImageEqual, localeEqual)); return criteriaBuilder.exists(subquery); }
@Override public Predicate getMatchingLocaleString(final String locale) { final CriteriaBuilder criteriaBuilder = getCriteriaBuilder(); final Subquery<LanguageFile> subquery = getCriteriaQuery().subquery(LanguageFile.class); final Root<LanguageFile> from = subquery.from(LanguageFile.class); final Predicate languageFileEqual = criteriaBuilder.equal(getRootPath(), from.get("file")); final Predicate localeEqual = criteriaBuilder.equal(from.get("locale").get("value"), locale); subquery.where(criteriaBuilder.and(languageFileEqual, localeEqual)); return criteriaBuilder.exists(subquery); }
@Override public Predicate getNotMatchingLocaleString(final String locale) { final CriteriaBuilder criteriaBuilder = getCriteriaBuilder(); final Subquery<LanguageFile> subquery = getCriteriaQuery().subquery(LanguageFile.class); final Root<LanguageFile> from = subquery.from(LanguageFile.class); final Predicate languageFileEqual = criteriaBuilder.equal(getRootPath(), from.get("file")); final Predicate localeEqual = criteriaBuilder.equal(from.get("locale").get("value"), locale); subquery.where(criteriaBuilder.and(languageFileEqual, localeEqual)); return criteriaBuilder.not(criteriaBuilder.exists(subquery)); } }
@Override public Predicate getMatchTagString(final Integer tagId) { final CriteriaBuilder criteriaBuilder = getCriteriaBuilder(); final Subquery<ContentSpecToTag> subquery = getCriteriaQuery().subquery(ContentSpecToTag.class); final Root<ContentSpecToTag> from = subquery.from(ContentSpecToTag.class); final Predicate contentSpec = criteriaBuilder.equal(from.get("contentSpec").get("contentSpecId"), getRootPath().get("contentSpecId")); final Predicate tag = criteriaBuilder.equal(from.get("tag").get("tagId"), tagId); final Predicate notBookTag = criteriaBuilder.equal(from.get("bookTag"), false); subquery.select(from); subquery.where(criteriaBuilder.and(contentSpec, tag, notBookTag)); return criteriaBuilder.exists(subquery); }
@Override public Predicate getMatchTagString(final Integer tagId) { final CriteriaBuilder queryBuilder = getCriteriaBuilder(); final Subquery<TopicToTag> subQuery = getCriteriaQuery().subquery(TopicToTag.class); final Root<TopicToTag> from = subQuery.from(TopicToTag.class); final Predicate topic = queryBuilder.equal(from.get("topic"), getRootPath()); final Predicate tag = queryBuilder.equal(from.get("tag").get("tagId"), tagId); subQuery.select(from); subQuery.where(queryBuilder.and(topic, tag)); return queryBuilder.exists(subQuery); }
@Override public Predicate getNotMatchingLocaleString(final String locale) { final CriteriaBuilder criteriaBuilder = getCriteriaBuilder(); final Subquery<LanguageImage> subquery = getCriteriaQuery().subquery(LanguageImage.class); final Root<LanguageImage> from = subquery.from(LanguageImage.class); final Predicate languageImageEqual = criteriaBuilder.equal(getRootPath(), from.get("imageFile")); final Predicate localeEqual = criteriaBuilder.equal(from.get("locale").get("value"), locale); subquery.where(criteriaBuilder.and(languageImageEqual, localeEqual)); return criteriaBuilder.not(criteriaBuilder.exists(subquery)); }
/** * Add a Field Search Condition that will check if the result of a subquery doesn't exist. * * @param subquery The subquery to check if it's result doesn't exist. */ protected void addNotExistsCondition(final Subquery<?> subquery) { addFieldCondition(getCriteriaBuilder().not(getCriteriaBuilder().exists(subquery))); }
@Override public Predicate getNotMatchTagString(final Integer tagId) { final CriteriaBuilder criteriaBuilder = getCriteriaBuilder(); final Subquery<ContentSpecToTag> subquery = getCriteriaQuery().subquery(ContentSpecToTag.class); final Root<ContentSpecToTag> from = subquery.from(ContentSpecToTag.class); final Predicate contentSpec = criteriaBuilder.equal(from.get("contentSpec").get("contentSpecId"), getRootPath().get("contentSpecId")); final Predicate tag = criteriaBuilder.equal(from.get("tag").get("tagId"), tagId); final Predicate notBookTag = criteriaBuilder.equal(from.get("bookTag"), false); subquery.select(from); subquery.where(criteriaBuilder.and(contentSpec, tag, notBookTag)); return criteriaBuilder.not(criteriaBuilder.exists(subquery)); }
@Override public Predicate getMatchTagString(final Integer tagId) { final CriteriaBuilder queryBuilder = getCriteriaBuilder(); final Subquery<TopicToTag> subQuery = getCriteriaQuery().subquery(TopicToTag.class); final Root<TopicToTag> from = subQuery.from(TopicToTag.class); final Predicate topic = queryBuilder.equal(from.get("topic").get("topicId"), translatedTopic.get("topicId")); final Predicate tag = queryBuilder.equal(from.get("tag").get("tagId"), tagId); subQuery.select(from); subQuery.where(queryBuilder.and(topic, tag)); return queryBuilder.exists(subQuery); }
@Override public Predicate getNotMatchTagString(final Integer tagId) { final CriteriaBuilder criteriaBuilder = getCriteriaBuilder(); final Subquery<TopicToTag> subQuery = getCriteriaQuery().subquery(TopicToTag.class); final Root<TopicToTag> from = subQuery.from(TopicToTag.class); final Predicate topic = criteriaBuilder.equal(from.get("topic"), getRootPath()); final Predicate tag = criteriaBuilder.equal(from.get("tag").get("tagId"), tagId); subQuery.select(from); subQuery.where(criteriaBuilder.and(topic, tag)); return criteriaBuilder.not(criteriaBuilder.exists(subQuery)); }
@Override public Predicate getNotMatchTagString(final Integer tagId) { final CriteriaBuilder criteriaBuilder = getCriteriaBuilder(); final Subquery<TopicToTag> subQuery = getCriteriaQuery().subquery(TopicToTag.class); final Root<TopicToTag> from = subQuery.from(TopicToTag.class); final Predicate topic = criteriaBuilder.equal(from.get("topic").get("topicId"), translatedTopic.get("topicId")); final Predicate tag = criteriaBuilder.equal(from.get("tag").get("tagId"), tagId); subQuery.select(from); subQuery.where(criteriaBuilder.and(topic, tag)); return criteriaBuilder.not(criteriaBuilder.exists(subQuery)); }