我只需要从DB中取出一个结果。我如何使用JPA做到这一点?
Select top 1 * from table
我尽力了“从表t中选择t”
query.setMaxResults(1); query.getSingleResult();
但没起作用还有别的主意吗
2w2cym1i1#
这样试试
String sql = "SELECT t FROM table t"; Query query = em.createQuery(sql); query.setFirstResult(firstPosition); query.setMaxResults(numberOfRecords); List result = query.getResultList();
应该可以的
更新*
你也可以这样试试
query.setMaxResults(1).getResultList();
ckocjqey2#
要在TypedQuery上使用getSingleResult,可以使用
query.setFirstResult(0); query.setMaxResults(1); result = query.getSingleResult();
bsxbgnwa3#
2021 att:您可以在Spring Data JPA中使用TOP或FIRST示例:
User findFirstByOrderByLastnameAsc(); User findTopByOrderByAgeDesc(); Page<User> queryFirst10ByLastname(String lastname, Pageable pageable); Slice<User> findTop3ByLastname(String lastname, Pageable pageable); List<User> findFirst10ByLastname(String lastname, Sort sort); List<User> findTop10ByLastname(String lastname, Pageable pageable);
文档:https://docs.spring.io/spring-data/jpa/docs/2.5.4/reference/html/#repositories.limit-query-result
pdtvr36n4#
最简单的方法是使用**@Query和NativeQuery选项**,如下所示:
@Query(value="SELECT 1 * FROM table ORDER BY anyField DESC LIMIT 1", nativeQuery = true)
x33g5p2x5#
通过在实体类上指定@NamedNativeQuery注解或使用EntityManager.createNativeQuery方法来使用本机SQL查询。您需要使用适当的类指定ResultSet的类型,或者使用ResultSetMap。
@NamedNativeQuery
EntityManager.createNativeQuery
nimxete26#
使用Pageable大小为1,并按您希望它应该工作的字段排序
@Query("from Cat t order by t.name desc") Page<Cat> findCats(Pageable page);
应该使用页面是
Pageable page = PageRequest.of(0, 1, Sort.by(Sort.Direction.DESC, "name"));
6条答案
按热度按时间2w2cym1i1#
这样试试
应该可以的
更新*
你也可以这样试试
ckocjqey2#
要在TypedQuery上使用getSingleResult,可以使用
bsxbgnwa3#
2021 att:您可以在Spring Data JPA中使用TOP或FIRST
示例:
文档:https://docs.spring.io/spring-data/jpa/docs/2.5.4/reference/html/#repositories.limit-query-result
pdtvr36n4#
最简单的方法是使用**@Query和NativeQuery选项**,如下所示:
x33g5p2x5#
通过在实体类上指定
@NamedNativeQuery
注解或使用EntityManager.createNativeQuery
方法来使用本机SQL查询。您需要使用适当的类指定ResultSet的类型,或者使用ResultSetMap。nimxete26#
使用Pageable大小为1,并按您希望它应该工作的字段排序
应该使用页面是