diff --git a/src/gaea.mongo/src/main/kotlin/com/synebula/gaea/mongo/query/MongoGenericQuery.kt b/src/gaea.mongo/src/main/kotlin/com/synebula/gaea/mongo/query/MongoGenericQuery.kt index 46dd9a2..ab6b081 100644 --- a/src/gaea.mongo/src/main/kotlin/com/synebula/gaea/mongo/query/MongoGenericQuery.kt +++ b/src/gaea.mongo/src/main/kotlin/com/synebula/gaea/mongo/query/MongoGenericQuery.kt @@ -103,6 +103,11 @@ open class MongoGenericQuery(var template: MongoTemplate, var logger: ILo val fields = this.clazz!!.fieldNames() val result = PagingData(param.page, param.size) result.total = this.count(param.parameters) + //如果总数和索引相同,说明该页没有数据,直接跳到上一页 + if (result.total == result.index) { + param.page -= 1 + result.page -= 1 + } query.select(fields.toTypedArray()) query.where(param.parameters, this.clazz!!) query.with(order(param.orderBy)) diff --git a/src/gaea.mongo/src/main/kotlin/com/synebula/gaea/mongo/query/MongoQuery.kt b/src/gaea.mongo/src/main/kotlin/com/synebula/gaea/mongo/query/MongoQuery.kt index baa4e37..b5fabe8 100644 --- a/src/gaea.mongo/src/main/kotlin/com/synebula/gaea/mongo/query/MongoQuery.kt +++ b/src/gaea.mongo/src/main/kotlin/com/synebula/gaea/mongo/query/MongoQuery.kt @@ -48,12 +48,17 @@ open class MongoQuery(var repo: MongoTemplate, var logger: ILogger? = null) : IQ } override fun paging(param: PagingParam, clazz: Class): PagingData { + val query = Query() val fields = clazz.fieldNames() val result = PagingData(param.page, param.size) result.total = this.count(param.parameters, clazz) - val query = Query() - query.where(param.parameters, clazz) + //如果总数和索引相同,说明该页没有数据,直接跳到上一页 + if (result.total == result.index) { + param.page -= 1 + result.page -= 1 + } query.select(fields.toTypedArray()) + query.where(param.parameters, clazz) query.with(order(param.orderBy)) query.skip(param.index).limit(param.size) result.data = this.repo.find(query, clazz, this.collection(clazz))