【发布时间】:2012-01-23 05:43:01
【问题描述】:
是否可以对 JPA 查询中的子查询施加 LIMIT 限制?
我在纯 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
因为我不能在 JPQL 中使用 LIMIT,所以我必须在上面使用 setMaxResults(1)。但是子查询呢?
更新:
我现在决定使用@NamedNativeQuery,但它是特定于数据库的代码。如果你们能提出纯 JPA 解决方案,我将不胜感激。
【问题讨论】: