diff --git a/src/main/java/io/ebean/ExpressionList.java b/src/main/java/io/ebean/ExpressionList.java index c40cd0845..653d54be7 100644 --- a/src/main/java/io/ebean/ExpressionList.java +++ b/src/main/java/io/ebean/ExpressionList.java @@ -52,6 +52,14 @@ public interface ExpressionList { */ Query query(); + /** + * Controls, if paginated queries should always append an 'order by id' statement at the end to + * guarantee a deterministic sort result. This may affect performance. + * If this is not enabled, and an orderBy is set on the query, it's up to the programmer that + * this query provides a deterministic result. + */ + Query orderById(boolean orderById); + /** * Set the order by clause replacing the existing order by clause if there is * one. diff --git a/src/main/java/io/ebeaninternal/server/expression/DefaultExpressionList.java b/src/main/java/io/ebeaninternal/server/expression/DefaultExpressionList.java index f66af2401..6d5dd40b2 100644 --- a/src/main/java/io/ebeaninternal/server/expression/DefaultExpressionList.java +++ b/src/main/java/io/ebeaninternal/server/expression/DefaultExpressionList.java @@ -354,6 +354,11 @@ public class DefaultExpressionList implements SpiExpressionList { return query.order(orderBy); } + @Override + public Query orderById(boolean orderById) { + return query.orderById(orderById); + } + @Override public Query apply(FetchPath fetchPath) { return query.apply(fetchPath); diff --git a/src/main/java/io/ebeaninternal/server/expression/JunctionExpression.java b/src/main/java/io/ebeaninternal/server/expression/JunctionExpression.java index 2b31a746a..00d7b83b2 100644 --- a/src/main/java/io/ebeaninternal/server/expression/JunctionExpression.java +++ b/src/main/java/io/ebeaninternal/server/expression/JunctionExpression.java @@ -813,6 +813,11 @@ class JunctionExpression implements SpiJunction, SpiExpression, Expression return exprList.orderBy(orderBy); } + @Override + public Query orderById(boolean orderById) { + return exprList.orderById(orderById); + } + @Override public Query query() { return exprList.query();