Как с помощью спецификаций реализовать исключения по 3 связанным таблицам?

Есть три таблицы. Эмейлы, рассылки и типы рассылок. Эмейлы один ко многим к рассылкам. Типы рассылок многие ко одному к рассылкам. Нужно через спецификации исключить все эмейлы которые содержат в рассылках хоть один определённый тип рассылок за определенный период. В метод мне приходит просто id типа рассылки и Period. Этот вариант работает если у эмейла только одна рассылка.

private static Specification<Email> isModelExcludeEquals(List<Long> modelId, Period period) {
        return (root, query, criteriaBuilder) -> {
            query.distinct(true);
             return  criteriaBuilder.and(
              criteriaBuilder.lessThan(root.join("mailing",JoinType.LEFT).get("date"), LocalDateTime.now().minus(period)),
              root.join("mailing", JoinType.LEFT).get("model").get("id").in(modelId)));};
    }

Ответы (0 шт):