[英]IncorrectResultSizeDataAccessException - Trying to simply get the most recent row
我有一个名为'ImportReceiptRepository'的Spring CrudRepository。
我只是想编写一个方法来抓取order by子句中的第一行。
这是我目前使用的:
ImportReceipt importReceipt = this.importReceiptRepository.getOneByImportTypeOrderByTimestampDesc(importType);
问题是,当返回的行数超过一行时,Spring会抛出:
org.springframework.dao.IncorrectResultSizeDataAccessException: result returns more than one elements; nested exception is javax.persistence.NonUniqueResultException: result returns more than one elements
如果返回0-n行,我应该如何重命名这个CrudRepository函数来简单地获取第一行?
简单地使用Pageable是关键:
List<ImportReceipt> findByImportType(String importType, Pageable pageable);
并称之为:
List<ImportReceipt> importReceipts = this.importReceiptRepository.findByImportType(importType, new PageRequest(0, 1, Direction.DESC, "Timestamp"));
ImportReceipt importReceipt = importReceipts.get(0);
Credit: 如何在Spring Data JPA中将分页与条件查询相结合?
从即将发布的Spring Data JPA 1.7版本开始,您最初声明的查询方法开箱即用。 有关详细信息,请参阅此票 该支持已在该版本的第一个里程碑中发布。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.