java如何使用JPQL从SELECT操作获取第一行? 3 周 Questions & Answers 15744 我有一个数据库,其中包含一些测试的数据,我想使用它们的属性日期对它们进行适当的排序,并且只取所有测试中的第一个。我的意思是,相当于JPQL中SQL的前1名 谢谢你的帮助
# 1 楼答案 在Spring Data JPA中,使用关键字first或top,两者在语义上是相同的,我更喜欢top,因为要键入的字母少了2个;-) Foo findTopByOrderByDateDesc(); //Top 1 assumed Foo findFirstByOrderByDateDesc(); //First 1 assumed 如果要查找前X行,其中X是一个数字,请使用: List<Foo> findTopXByOrderByDateDesc(); List<Foo> findFirstXByOrderByDateDesc(); 如果要记住处理null返回,请将结果包装为Optional: Optional<Foo> findTopByOrderByDateDesc(); Optional<Foo> findFirstByOrderByDateDesc();
# 2 楼答案 在触发提取之前,通常在Query对象上设置: entityManager.createQuery("...") .setMaxResults(1) .getResultList(); 通过使用Spring数据Jpa语法,您可以使用如下内容: Optional<Test> findFirstByOrderByDateDesc(); 或者使用Pageable: Page<Test> test = repository.findAll( PageRequest.of(0, 1, Sort.by(Sort.Direction.DESC, "date")));
# 3 楼答案 在春季jpa中,你可以这样做 Foo findTopByOrderByDateDesc(); //This will return 1st item List<Foo> findTop10ByOrderByDateDesc(); //This will return top 10 item 供参考Spring Jpa Doc
# 4 楼答案 大多数常见 Foo findFirstByOrderByDateDESC(); 将@Query与nativeQuery = true一起使用 @Query(value="SELECT 1 * FROM "TableName" ORDER BY "DATE in db" DESC LIMIT 1", nativeQuery = true) Foo findFirstByOrderByDateDESC(Long id); // name can be random
# 1 楼答案
在Spring Data JPA中,使用关键字first或top,两者在语义上是相同的,我更喜欢top,因为要键入的字母少了2个;-)
如果要查找前X行,其中X是一个数字,请使用:
如果要记住处理null返回,请将结果包装为
Optional
:# 2 楼答案
在触发提取之前,通常在
Query
对象上设置:通过使用Spring数据Jpa语法,您可以使用如下内容:
或者使用
Pageable
:# 3 楼答案
在春季jpa中,你可以这样做
供参考Spring Jpa Doc
# 4 楼答案
大多数常见
将@Query与
nativeQuery = true
一起使用