java – 用于更新的分页.可能吗?
发布时间:2020-12-15 02:15:34 所属栏目:Java 来源:网络整理
导读:它们是否存在一些处理更新分页的方法? 例如,我有100行类型: @Idprivate Integer id;@Columnprivate boolean flag;@Columnprivate Date last; 在开始时,它们看起来像:id,false,null 我有坚持的方法: @Query("SELECT t FROM Test t WHERE (t.last :process
|
它们是否存在一些处理更新分页的方法?
例如,我有100行类型: @Id private Integer id; @Column private boolean flag; @Column private Date last; 在开始时,它们看起来像:id,false,null 我有坚持的方法: @Query("SELECT t FROM Test t WHERE (t.last < :processStart OR t.last IS NULL)")
Page<Test> find(Pageable pageable,@Param("processStart") Date processStart);
我需要取10,为每个设置标志为true和last = new Date()并将其保存回DB. 实施看起来像: Date start = new Date();
for (int i = 0; i < 10; i++) {
Pageable request = new PageRequest(i,10,SortDirectuin.ASC,"id");
Page page = testPersistence.find(request,start);
page.getContext().forEach(t -> {
..huge part of another operation..
t.setFlag(true);
t.setLast(new Date());
testPersistence.save(t);
});
}
首页上下文应该是id:0..9; 但在我的情况下,第二页返回id:20..29; 在分页结束时,我丢失了一半的数据. 怎么预防这个? 解决方法
我发明了一种自行车方法,我试着解释一下:
分页的工作方式如下: 1) row1 | 2) row1 row2 | get1 row2 row3 | row3 row4 row4 | row5 row5 | get2 row6 row6 | row7 row7 row8 row8 row9 row9 但在我的情况下,我的行被更改,他们不符合请求.分页看起来像: 1) row1 | 2) row4 row2 | get1 row5 row3 | row6 row4 row7 | row5 row8 | get2 row6 row9 | row7 row8 row9 哎呀,我失去了一个分页周期集. 我的解决方案不是增量页面.并获得第一页所有时间看起来像: 1) row1 | 2) row4 | 3) row7 | row2 | get1 row5 | get1 row8 | get1 row3 | row6 | row9 | row4 row7 row5 row8 row6 row9 row7 row8 row9 在这种情况下,我不会丢失任何行.但我再说一遍,这是自行车解决方案,它可能在另一种情况下不起作用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
