提问者:小点点

Spring数据:自定义查询的极限结果


在我的Spring Data存储库中,我(必须)使用@Query注释使用自定义查询。我知道我可以限制这样命名查询中的结果数量

Iterable

或者可以通过传递这样的可分页来限制结果的数量

Iterable

但是,在使用自定义@Query注释时,是否有可能实现相同的目标?

提亚

编辑

正如我看到的,我的问题有点混乱,有些模糊:我想要的是在使用自定义查询时限制我得到的结果的数量,这样我就不会

1)需要通过可分页指定结果大小

2)需要使用命名查询来指定结果大小

事实上,我希望在调用方法时,结果数量的限制是完全透明的(因此不传递可分页的<code>代码),并且不依赖Spring数据的命名方案(因为方法的含义/功能最好通过自定义名称来表达)


共3个答案

匿名用户

你可以试试这个:

@Entity
@Table(name = "persons") 
public class Person {
    //...
}

@Query(value = "select * from persons limit 50", nativeQuery = true)
List<Person> getFirst50();

不要忘记检查您的SQL服务器是否支持限制关键字。

匿名用户

当然,您可以使用@Query对结果进行排序,例如,它是一个JPQL查询。

@Query("SELECT u FROM User u ORDER BY u.name ASC")

可以通过提供PageRequest或直接使用Sort进行进一步的排序。

https://docs . spring . io/spring-data/JPA/docs/current/reference/html/# JPA . query-methods . sorting

匿名用户

我建议添加“By”,但没有参数,它将起作用:

List<Person> findTop100By();