我有一个数据库,其中包含有关某些测试的数据,我想使用其属性DATE合理地对它们进行排序,并仅采用所有这些中的第一个。我的意思是,JPQL中相当于SQL的TOP 1。
感谢您的帮助!
答案 0 :(得分:1)
通常在触发提取之前,在Query
对象上进行设置:
entityManager.createQuery("...")
.setMaxResults(1)
.getResultList();
使用Spring Data Jpa语法,您将使用类似以下内容:
Optional<Test> findFirstByOrderByDateDesc();
或使用Pageable
:
Page<Test> test = repository.findAll(
PageRequest.of(0, 1, Sort.by(Sort.Direction.DESC, "date")));
答案 1 :(得分:0)
在jpa春季,您可以执行以下操作
Foo findTopByOrderByDateDesc(); //This will return 1st item
List<Foo> findTop10ByOrderByDateDesc(); //This will return top 10 item
答案 2 :(得分:0)
最常见
Foo findFirstByOrderByDateDESC();
与nativeQuery = true
一起使用 @Query
@Query(value="SELECT 1 * FROM "TableName" ORDER BY "DATE in db" DESC LIMIT 1", nativeQuery = true)
Foo findFirstByOrderByDateDESC(Long id); // name can be random
答案 3 :(得分:0)
在Spring Data JPA中,使用关键字first或top,两者在语义上是相同的,我更喜欢top,因为要输入的字母要少 2 个;-)
<块引用>Foo findTopByOrderByDateDesc(); //假设前1个
Foo findFirstByOrderByDateDesc(); //假设前1个
如果要查找前 X 行,其中 X 是数字,请使用:
<块引用>List
List
如果您想记住处理空返回,请将结果包装在 Optional
中:
可选
可选
可选> findTopXByOrderByDateDesc();
可选> findFirstXByOrderByDateDesc();