Могу ли я преобразовать этот запрос Mysql в JPA? - PullRequest
2 голосов
/ 28 января 2011

Я довольно хорошо знаком с 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?

1 Ответ

1 голос
/ 28 января 2011

В JPA возможно самостоятельное объединение.

Взгляните на этот пример

из примера

    @NamedQuery(name="siblings", query="select distinct sibling1 "
    + "from Deity sibling1, Deity sibling2 where "
    + "sibling1.father = sibling2.father "
    + "and sibling1.mother = sibling2.mother "
    + "and sibling2 = ?1 and sibling1 <> ?1"),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...