vir*_*sha 10 java spring hibernate jpa
我想获取实体的最后5条记录.但无法通过Spring Data JPA获取它.
最初我试图通过LIMIT查询获取数据,但JPA不支持LIMIT.
后来我尝试了Pageable界面.
Pageable pageCount = new PageRequest(0, 10, Direction.ASC,"id");
List<TxnEntity> txnEntities = txnDAO
.findByAccountEntity(accountEntity,pageCount);
Run Code Online (Sandbox Code Playgroud)
这给了我第一页10个对象.
但我的要求是获得最后10或5个对象.那么如何通过PageableSpring框架中的接口获取它呢?
从参考文档:
要了解您完全为查询获得了多少页,您必须触发额外的计数查询。默认情况下,此查询将从您实际触发的查询派生。
您可以通过提前发出计数查询来确定页数:
Long count = txnDAO.countByAccountEntity(accountEntity);
Pageable pageCount = new PageRequest((int)count/10, 10, Direction.ASC,"id");
Run Code Online (Sandbox Code Playgroud)
我期望的输出是最后 n 条记录。
所以我使用了 Spring Data JPA 1.7 内置查询
int n = 10;
Pageable pageCount = new PageRequest(0, n);
List<TxnEntity> txnEntities = txnDAO
.findByAccountEntityOrderByIdDesc(accountEntity,pageCount);
Run Code Online (Sandbox Code Playgroud)
现在这将返回最后 n 条记录。
DAO 将按降序返回所有记录,通过使用 Pageable,我们可以从底部知道我们需要多少条记录。
很简单。
有关更多 JPA 查询内置查询: http://docs.spring.io/spring-data/jpa/docs/current/reference/html/
| 归档时间: |
|
| 查看次数: |
8882 次 |
| 最近记录: |