У меня есть один-ко-многим отношения в моих данных. Мне нужно запросить счет родителей, где хотя бы один ребенок соответствует условию, у всех детей совпадает с требованием и никто из детей не соответствует требованиям.
например, я хочу посчитать родителей, где никто из детей не имеет material_score равна нулю. Я написал следующую спецификацию для получения родительского списка
return new Specification() {
@Override
public Predicate toPredicate(Root root, CriteriaQuery<?> query, CriteriaBuilder builder) {
SetJoin surveyItems = root.join(Property_.surveyItems, JoinType.INNER);
return builder.equal(builder.count(builder.equal(surveyItems.get(SurveyItem_.materialScore), 0)), 0);
}
};
но тогда запрос является недействительным
antlr.MismatchedTokenException: ожидая закрытия, нашли критерии '=' ошибка запроса
Ошибка происходит потому, что условные запроса внутри граф не допускается?
Тогда как я могу получить свойства, которые не имеет никаких элементов обследование (детей) с материал считать равным нулю?