diff --git a/src/main/java/com/github/vincentrussell/query/mongodb/sql/converter/holder/from/SQLCommandInfoHolder.java b/src/main/java/com/github/vincentrussell/query/mongodb/sql/converter/holder/from/SQLCommandInfoHolder.java index 7b15608..428757d 100644 --- a/src/main/java/com/github/vincentrussell/query/mongodb/sql/converter/holder/from/SQLCommandInfoHolder.java +++ b/src/main/java/com/github/vincentrussell/query/mongodb/sql/converter/holder/from/SQLCommandInfoHolder.java @@ -327,7 +327,7 @@ public Builder setPlainSelect(final PlainSelect plainSelect) from = generateFromHolder(new FromHolder(this.defaultFieldType, this.fieldNameToFieldTypeMapping), plainSelect.getFromItem(), plainSelect.getJoins()); limit = SqlUtils.getLimitAsLong(plainSelect.getLimit()); - offset = SqlUtils.getOffsetAsLong(plainSelect.getOffset()); + offset = SqlUtils.getOffsetAsLong(plainSelect.getLimit(), plainSelect.getOffset()); orderByElements = plainSelect.getOrderByElements(); selectItems = plainSelect.getSelectItems(); joins = plainSelect.getJoins(); diff --git a/src/main/java/com/github/vincentrussell/query/mongodb/sql/converter/util/SqlUtils.java b/src/main/java/com/github/vincentrussell/query/mongodb/sql/converter/util/SqlUtils.java index 25cc70e..34e7670 100644 --- a/src/main/java/com/github/vincentrussell/query/mongodb/sql/converter/util/SqlUtils.java +++ b/src/main/java/com/github/vincentrussell/query/mongodb/sql/converter/util/SqlUtils.java @@ -241,12 +241,17 @@ public static long getLimitAsLong(final Limit limit) throws ParseException { /** * get offset as long. + * @param limit the limit * @param offset the offset * @return the offset */ - public static long getOffsetAsLong(final Offset offset) { + public static long getOffsetAsLong(final Limit limit, final Offset offset) throws ParseException { if (offset != null && LongValue.class.isInstance(offset.getOffset())) { return ((LongValue) offset.getOffset()).getValue(); + } else { + if (limit != null) { + return getLongFromStringIfInteger(SqlUtils.getStringValue(limit.getOffset())); + } } return -1; }