У меня есть отношение @OneToMany от Category.comparisons к Comparison.category (и отношение @ManyToOne в другом направлении).
Мой объект сравнения имеет поле "дата", а мой объект категории имеет логическое "безопасное" поле.
Я хочу получить 10 объектов Category, которые имеют наибольшее количество сравнений после даты, которую я передаю в запрос, и где Category.safe имеет значение true.
Вот мое лучшее усилие, но оно совсем не работает:
SELECT c FROM Category c JOIN Category.comparisons
WHERE c.safe = true AND c.comparisons.date > :afterDate
ORDER BY COUNT(Category.comparisons) DESC
Я мог бы сделать это достаточно легко в нативном MySQL, но у меня возникли серьезные проблемы с тем, как разобраться, как JPA обрабатывает ссылки на внешние ключи, и различными другими различиями в синтаксисе между SQL и языком запросов JPA.
Как мне сделать то, что я пытаюсь сделать?