@@ -988,9 +988,14 @@ public Query startAt(@Nonnull DocumentSnapshot snapshot) {
988988 */
989989 @ Nonnull
990990 public Query startAt (Object ... fieldValues ) {
991- Cursor cursor = createCursor (options .getFieldOrders (), fieldValues , true );
991+ ImmutableList <FieldOrder > fieldOrders =
992+ fieldValues .length == 1 && fieldValues [0 ] instanceof DocumentReference
993+ ? createImplicitOrderBy ()
994+ : options .getFieldOrders ();
995+ Cursor cursor = createCursor (fieldOrders , fieldValues , true );
992996
993997 Builder newOptions = options .toBuilder ();
998+ newOptions .setFieldOrders (fieldOrders );
994999 newOptions .setStartCursor (cursor );
9951000 return new Query (rpcContext , newOptions .build ());
9961001 }
@@ -1069,9 +1074,14 @@ public Query startAfter(@Nonnull DocumentSnapshot snapshot) {
10691074 * @return The created Query.
10701075 */
10711076 public Query startAfter (Object ... fieldValues ) {
1072- Cursor cursor = createCursor (options .getFieldOrders (), fieldValues , false );
1077+ ImmutableList <FieldOrder > fieldOrders =
1078+ fieldValues .length == 1 && fieldValues [0 ] instanceof DocumentReference
1079+ ? createImplicitOrderBy ()
1080+ : options .getFieldOrders ();
1081+ Cursor cursor = createCursor (fieldOrders , fieldValues , false );
10731082
10741083 Builder newOptions = options .toBuilder ();
1084+ newOptions .setFieldOrders (fieldOrders );
10751085 newOptions .setStartCursor (cursor );
10761086 return new Query (rpcContext , newOptions .build ());
10771087 }
@@ -1105,9 +1115,14 @@ public Query endBefore(@Nonnull DocumentSnapshot snapshot) {
11051115 */
11061116 @ Nonnull
11071117 public Query endBefore (Object ... fieldValues ) {
1108- Cursor cursor = createCursor (options .getFieldOrders (), fieldValues , true );
1118+ ImmutableList <FieldOrder > fieldOrders =
1119+ fieldValues .length == 1 && fieldValues [0 ] instanceof DocumentReference
1120+ ? createImplicitOrderBy ()
1121+ : options .getFieldOrders ();
1122+ Cursor cursor = createCursor (fieldOrders , fieldValues , true );
11091123
11101124 Builder newOptions = options .toBuilder ();
1125+ newOptions .setFieldOrders (fieldOrders );
11111126 newOptions .setEndCursor (cursor );
11121127 return new Query (rpcContext , newOptions .build ());
11131128 }
@@ -1121,9 +1136,14 @@ public Query endBefore(Object... fieldValues) {
11211136 */
11221137 @ Nonnull
11231138 public Query endAt (Object ... fieldValues ) {
1124- Cursor cursor = createCursor (options .getFieldOrders (), fieldValues , false );
1139+ ImmutableList <FieldOrder > fieldOrders =
1140+ fieldValues .length == 1 && fieldValues [0 ] instanceof DocumentReference
1141+ ? createImplicitOrderBy ()
1142+ : options .getFieldOrders ();
1143+ Cursor cursor = createCursor (fieldOrders , fieldValues , false );
11251144
11261145 Builder newOptions = options .toBuilder ();
1146+ newOptions .setFieldOrders (fieldOrders );
11271147 newOptions .setEndCursor (cursor );
11281148 return new Query (rpcContext , newOptions .build ());
11291149 }
0 commit comments