Как наложить LIMIT на подзапрос JPA-запроса?

Можно ли наложить LIMIT на подзапрос в запросе JPA?

У меня есть следующий запрос в чистом SQL

select * from ipinfo 
where RangeEnd < (select RangeStart from ipinfo where RangeStart >= 1537022421 order by RangeStart asc limit 1) and (1537022421 <= RangeEnd)
ORDER BY RangeEnd desc
limit 1

Конвертируя его напрямую в JPQL, у меня было бы что-то вроде

select obj from IpInfo obj
where obj.rangeEnd < (select obj2.rangeStart from IpInfo obj2 where obj2.rangeStart >= ?1 order by obj2.rangeStart asc limit 1) and (?1 <= obj.rangeEnd)
ORDER BY obj.rangeEnd desc
limit 1

Поскольку я не могу использовать LIMIT в JPQL, мне пришлось бы использовать на нем setMaxResults (1) . Но что о подзапросе?

Обновление:

Я решил использовать @NamedNativeQuery , но это специфичный для БД код. Если вы, ребята, можете предложить чистое решение JPA, я буду очень признателен.

10
задан expert 18 December 2011 в 23:05
поделиться