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 在这种情况下,我不会丢失任何行.但我再说一遍,这是自行车解决方案,它可能在另一种情况下不起作用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |