У меня есть отношение один ко многим в моих данных. Мне нужно запросить количество родителей, где хотя бы один ребенок соответствует условию, все дети соответствуют требованию, и ни один из детей не соответствует требованию.
например, я хочу количество родителей, где ни один из детей не имеет 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: ожидание ЗАКРЫТЬ, найдено '=' ошибка запроса критерия
Ошибка в том, что условный запрос внутри счетчика не разрешен?
Тогда как я могу получить свойства, у которых нет элементов опроса (дочерних элементов) с количеством материалов, равным нулю?