Hibernate OGM Mongodb Aggregate Query在下一次执行时无法使用JPA setFirstResult和setMaxResult

时间:2018-02-26 18:20:24

标签: java spring-mvc hibernate-ogm

  

我正在使用Hibernate OGM(5.2.0.Alpha1)和MongoDB(3.4)

我正在执行

字符串查询=“db.student.find({'collegeName':'VNSGU'})”

用于分页使用JPA setFirstResult()和setMaxResult(),它工作正常,但在执行聚合查询时

字符串查询=“db.student.aggregate([{'$ match':{'collegeName':'VNSGU'}}])”;

列表listOfStudent = entityManager.createNativeQuery(query,Student.class).setFirstResult(startPosition).setMaxResults(noOfRecords).getResultList();

执行:

  • 在数据库表中,我总共有10个大学名称的记录 'VNSGU',

  • 当startPosition = 0且noOfRecords = 5时,它将打开正确的输出 首先执行并返回5条记录,

  • 当第二次尝试执行查询时,startPosition = 5和 noOfRecords = 5,它将返回空列表,因为第二次执行它 将有5个没有记录,这是第一次执行的输出(我检查过 它通过执行查询而不使用setFirstResult()和setMaxResult()并返回 总共5条记录)。作为Per,我理解早期执行的输出会 成为下一次执行的输入,它将返回之前的结果 结果

但实际上发生了什么以及解决方案是什么...... ??

1 个答案:

答案 0 :(得分:0)

  

作为Per,我理解先前执行的输出将成为下一次执行的输入,它将返回早期结果的结果。

我不认为这是问题所在。更有可能的是,Hibernate OGM缓存了第一个查询的结果,并且它第二次返回它。这似乎与另一个问题有关:https://hibernate.atlassian.net/browse/OGM-1375

我会在进一步调查此问题后立即更新此答案。