Критерии гибернации Запросите родителей, где все дети соответствуют условию - PullRequest
0 голосов
/ 08 июля 2019

У меня есть отношение один ко многим в моих данных. Мне нужно запросить количество родителей, где хотя бы один ребенок соответствует условию, все дети соответствуют требованию, и ни один из детей не соответствует требованию.

например, я хочу количество родителей, где ни один из детей не имеет material_score, равный нулю. Я написал следующую спецификацию, чтобы получить список родителей

return new Specification<Property>() {
        @Override
        public Predicate toPredicate(Root<Property> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
            SetJoin<Property,SurveyItem> surveyItems = root.join(Property_.surveyItems, JoinType.INNER);
            return builder.equal(builder.count(builder.equal(surveyItems.get(SurveyItem_.materialScore), 0)), 0);
        }
    };

но тогда запрос недействителен

antlr.MismatchedTokenException: ожидание ЗАКРЫТЬ, найдено '=' ошибка запроса критерия

Ошибка в том, что условный запрос внутри счетчика не разрешен?

Тогда как я могу получить свойства, у которых нет элементов опроса (дочерних элементов) с количеством материалов, равным нулю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...