Skip to content

Commit b74e76d

Browse files
committed
HHH-19266 make getRowNumber() return getPosition() - 1
for better backward-compatibility
1 parent 74ecc8b commit b74e76d

File tree

5 files changed

+39
-40
lines changed

5 files changed

+39
-40
lines changed

hibernate-core/src/main/java/org/hibernate/ScrollableResults.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -135,25 +135,24 @@ public interface ScrollableResults<R> extends AutoCloseable {
135135
boolean isLast();
136136

137137
/**
138-
* Get the current position in the results.
139-
* <p>
140-
* The first position is row number 1.
138+
* Get the current position in the results, with the first
139+
* position labelled as row number {@code 0}. That is, this
140+
* operation returns {@link #getPosition() position-1}.
141141
*
142-
* @return The current position number, numbered from 1;
143-
* -1 indicates that there is no current row
142+
* @return The current position number, numbered from {@code 0};
143+
* {@code -1} indicates that there is no current row
144144
*
145145
* @deprecated Use {@link #getPosition()}
146146
*/
147147
@Deprecated(since = "7", forRemoval = true)
148148
int getRowNumber();
149149

150150
/**
151-
* Set the current position in the result set.
152-
* <p>
153-
* The first position is row number 1.
154-
* <p>
155-
* Can be numbered from the first result (positive number)
156-
* or backward from the last result (negative number).
151+
* Set the current position in the result set, with the first
152+
* position labelled as row number {@code 1}, and the last
153+
* position labelled as row number {@code -1}. Results may be
154+
* numbered from the first result (using a positive position)
155+
* or backward from the last result (using a negative position).
157156
*
158157
* @param rowNumber the row number. A positive number indicates
159158
* a value numbered from the first row; a

hibernate-core/src/main/java/org/hibernate/internal/EmptyScrollableResults.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public boolean isLast() {
7878

7979
@Override
8080
public int getRowNumber() {
81-
return 0;
81+
return -1;
8282
}
8383

8484
@Override

hibernate-core/src/main/java/org/hibernate/internal/FetchingScrollableResultsImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ public boolean isLast() {
267267

268268
@Override
269269
public int getRowNumber() {
270-
return currentPosition;
270+
return currentPosition - 1;
271271
}
272272

273273
@Override

hibernate-core/src/main/java/org/hibernate/internal/ScrollableResultsImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public boolean isLast() {
107107

108108
@Override
109109
public int getRowNumber() {
110-
return getPosition();
110+
return getPosition() - 1;
111111
}
112112

113113
@Override

hibernate-core/src/test/java/org/hibernate/orm/test/hql/ScrollableCollectionFetchingTest.java

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -354,17 +354,17 @@ public void testScrollingJoinFetchesWithNext(SessionFactoryScope scope) {
354354
.setParameter( "desc", "root%" )
355355
.scroll()) {
356356

357-
assertEquals( 0, results.getRowNumber() );
357+
assertEquals( 0, results.getPosition() );
358358

359359
assertTrue( results.next() );
360360
Animal animal = (Animal) results.get();
361361
assertEquals( data.root1Id, animal.getId(), "next() did not return expected row" );
362-
assertEquals( 1, results.getRowNumber() );
362+
assertEquals( 1, results.getPosition() );
363363

364364
assertTrue( results.next() );
365365
animal = (Animal) results.get();
366366
assertEquals( data.root2Id, animal.getId(), "next() did not return expected row" );
367-
assertEquals( 2, results.getRowNumber() );
367+
assertEquals( 2, results.getPosition() );
368368

369369
assertFalse( results.next() );
370370
}
@@ -386,17 +386,17 @@ public void testScrollingNoJoinFetchesWithNext(SessionFactoryScope scope) {
386386
.setParameter( "desc", "root%" )
387387
.scroll()) {
388388

389-
assertEquals( 0, results.getRowNumber() );
389+
assertEquals( 0, results.getPosition() );
390390

391391
assertTrue( results.next() );
392392
Animal animal = (Animal) results.get();
393393
assertEquals( data.root1Id, animal.getId(), "next() did not return expected row" );
394-
assertEquals( 1, results.getRowNumber() );
394+
assertEquals( 1, results.getPosition() );
395395

396396
assertTrue( results.next() );
397397
animal = (Animal) results.get();
398398
assertEquals( data.root2Id, animal.getId(), "next() did not return expected row" );
399-
assertEquals( 2, results.getRowNumber() );
399+
assertEquals( 2, results.getPosition() );
400400

401401
assertFalse( results.next() );
402402
}
@@ -421,52 +421,52 @@ public void testScrollingJoinFetchesPositioning(SessionFactoryScope scope) {
421421
results.first();
422422
Animal animal = (Animal) results.get();
423423
assertEquals( data.root1Id, animal.getId(), "first() did not return expected row" );
424-
assertEquals( 1, results.getRowNumber() );
424+
assertEquals( 1, results.getPosition() );
425425

426426
results.scroll( 1 );
427427
animal = (Animal) results.get();
428428
assertEquals( data.root2Id, animal.getId(), "scroll(1) did not return expected row" );
429-
assertEquals( 2, results.getRowNumber() );
429+
assertEquals( 2, results.getPosition() );
430430

431431
results.scroll( -1 );
432432
animal = (Animal) results.get();
433433
assertEquals( data.root1Id, animal.getId(), "scroll(-1) did not return expected row" );
434-
assertEquals( 1, results.getRowNumber() );
434+
assertEquals( 1, results.getPosition() );
435435

436436
results.next();
437437
animal = (Animal) results.get();
438438
assertEquals( data.root2Id, animal.getId(), "next() did not return expected row" );
439-
assertEquals( 2, results.getRowNumber() );
439+
assertEquals( 2, results.getPosition() );
440440

441441
results.setRowNumber( 1 );
442442
animal = (Animal) results.get();
443443
assertEquals( data.root1Id, animal.getId(), "setRowNumber(1) did not return expected row" );
444-
assertEquals( 1, results.getRowNumber() );
444+
assertEquals( 1, results.getPosition() );
445445

446446
results.setRowNumber( 2 );
447447
animal = (Animal) results.get();
448448
assertEquals( data.root2Id, animal.getId(), "setRowNumber(2) did not return expected row" );
449-
assertEquals( 2, results.getRowNumber() );
449+
assertEquals( 2, results.getPosition() );
450450

451451
results.setRowNumber( -2 );
452452
animal = (Animal) results.get();
453453
assertEquals( data.root1Id, animal.getId(), "setRowNumber(-2) did not return expected row" );
454-
assertEquals( 1, results.getRowNumber() );
454+
assertEquals( 1, results.getPosition() );
455455

456456
results.setRowNumber( -1 );
457457
animal = (Animal) results.get();
458458
assertEquals( data.root2Id, animal.getId(), "setRowNumber(-1) did not return expected row" );
459-
assertEquals( 2, results.getRowNumber() );
459+
assertEquals( 2, results.getPosition() );
460460

461461
results.position( 1 );
462462
animal = (Animal) results.get();
463463
assertEquals( data.root1Id, animal.getId(), "position(1) did not return expected row" );
464-
assertEquals( 1, results.getRowNumber() );
464+
assertEquals( 1, results.getPosition() );
465465

466466
results.position( 2 );
467467
animal = (Animal) results.get();
468468
assertEquals( data.root2Id, animal.getId(), "position(2) did not return expected row" );
469-
assertEquals( 2, results.getRowNumber() );
469+
assertEquals( 2, results.getPosition() );
470470
}
471471
}
472472
);
@@ -489,52 +489,52 @@ public void testScrollingNoJoinFetchesPositioning(SessionFactoryScope scope) {
489489
results.first();
490490
Animal animal = (Animal) results.get();
491491
assertEquals( data.root1Id, animal.getId(), "first() did not return expected row" );
492-
assertEquals( 1, results.getRowNumber() );
492+
assertEquals( 1, results.getPosition() );
493493

494494
results.scroll( 1 );
495495
animal = (Animal) results.get();
496496
assertEquals( data.root2Id, animal.getId(), "scroll(1) did not return expected row" );
497-
assertEquals( 2, results.getRowNumber() );
497+
assertEquals( 2, results.getPosition() );
498498

499499
results.scroll( -1 );
500500
animal = (Animal) results.get();
501501
assertEquals( data.root1Id, animal.getId(), "scroll(-1) did not return expected row" );
502-
assertEquals( 1, results.getRowNumber() );
502+
assertEquals( 1, results.getPosition() );
503503

504504
results.next();
505505
animal = (Animal) results.get();
506506
assertEquals( data.root2Id, animal.getId(), "next() did not return expected row" );
507-
assertEquals( 2, results.getRowNumber() );
507+
assertEquals( 2, results.getPosition() );
508508

509509
results.setRowNumber( 1 );
510510
animal = (Animal) results.get();
511511
assertEquals( data.root1Id, animal.getId(), "setRowNumber(1) did not return expected row" );
512-
assertEquals( 1, results.getRowNumber() );
512+
assertEquals( 1, results.getPosition() );
513513

514514
results.setRowNumber( 2 );
515515
animal = (Animal) results.get();
516516
assertEquals( data.root2Id, animal.getId(), "setRowNumber(2) did not return expected row" );
517-
assertEquals( 2, results.getRowNumber() );
517+
assertEquals( 2, results.getPosition() );
518518

519519
results.setRowNumber( -2 );
520520
animal = (Animal) results.get();
521521
assertEquals( data.root1Id, animal.getId(), "setRowNumber(-2) did not return expected row" );
522-
assertEquals( 1, results.getRowNumber() );
522+
assertEquals( 1, results.getPosition() );
523523

524524
results.setRowNumber( -1 );
525525
animal = (Animal) results.get();
526526
assertEquals( data.root2Id, animal.getId(), "setRowNumber(-1) did not return expected row" );
527-
assertEquals( 2, results.getRowNumber() );
527+
assertEquals( 2, results.getPosition() );
528528

529529
results.position( 1 );
530530
animal = (Animal) results.get();
531531
assertEquals( data.root1Id, animal.getId(), "position(1) did not return expected row" );
532-
assertEquals( 1, results.getRowNumber() );
532+
assertEquals( 1, results.getPosition() );
533533

534534
results.position( 2 );
535535
animal = (Animal) results.get();
536536
assertEquals( data.root2Id, animal.getId(), "position(2) did not return expected row" );
537-
assertEquals( 2, results.getRowNumber() );
537+
assertEquals( 2, results.getPosition() );
538538
}
539539
}
540540
);

0 commit comments

Comments
 (0)