Я довольно хорошо знаком с SQL, но очень плохо знаком с Java Persistence API.Я использую JPA через Play Framework.
У меня есть следующий запрос MySql, который я хотел бы преобразовать в чистый код JPA, если смогу:
SELECT a.id, b.id
FROM Rankable a
INNER JOIN Rankable b on a.id < b.id
WHERE
a.category_id = ? AND b.category_id = ?
AND NOT EXISTS (
SELECT *
FROM Comparison c
WHERE c.lower in (a.id, b.id))
AND NOT EXISTS (
SELECT *
FROM Comparison c
WHERE c.higher IN (a.id, b.id))
ORDER BY a.id * rand()
LIMIT 1;
Цель этого запроса - выбрать две строки в таблице Rankable, но убедитесь, что эта конкретная пара отсутствует в таблице сравнения.
Как лучше всего вызвать такой сложный запрос из Play / JPA?