Предполагая, что у вас есть запись с каким-то идентификатором и что нужно знать, в какой позиции она появляется в вашей таблице, когда таблица упорядочена по некоторым критериям, вы можете сделать это с помощью функций analyti c. Исходя из этого значения, вы можете легко вычислить страницу, на которой он отображается, с учетом размера страницы.
Пример схемы (MySQL v8.0)
create table example (
id integer not null primary key,
text varchar(20));
insert into example(id, text) values (23,"Alfred");
insert into example(id, text) values (47,"Berta");
insert into example(id, text) values (11,"Carl");
insert into example(id, text) values (42,"Diana");
insert into example(id, text) values (17,"Ephraim");
insert into example(id, text) values (1,"Fiona");
insert into example(id, text) values (3,"Gerald");
Query
select *
from (
select id, text,
count(*) over (order by text) cnt // change the order by according to your needs
from example
// a where clause here limits the table before counting
) x where id = 42; // this where clause finds the row you are interested in
| id | text | cnt |
| --- | ----- | --- |
| 42 | Diana | 4 |
Чтобы использовать его с Spring Data JPA, вы помещаете этот запрос в аннотацию @Query
и помечаете его как собственный запрос .