Как я могу сделать пейджинг с коллекциями @OneToMany

Предположим, у меня есть сущность Post и сущность Comment и отношение один ко многим:

@Entity class Post {
    ...
    @OneToMany
    List<Comment> comments;
    ...
}

Как я могу добиться пейджинга следующим образом:

Post post = //Find the post.
return post.getComments().fetch(100, 10); // Find the 11th page (page size 10);

Можно ли эмулировать динамическое разбиение по страницам с коллекциями @OneToMany поверх JPA, или нам нужно полностью переписать механизм ассоциации JPA? (например, создать тип коллекции PersistentList, который мог бы управлять поиском, сортировкой и поиском).

П.С .: Я недавно нашел Play! Фреймворк использует очень интересную библиотеку поверх JPA: Сиена. Сиена очень проста в использовании и является хорошей абстракцией поверх JPA / Hibernate. Но я не могу найти, как сделать пейджинг с его ассоциациями.

Обновить:

Play Framework имеет синтаксис запроса, похожий на Django:

Post.findAll().from(100).fetch(10);  // paging

где

Post.findAll() 

вернет объект JPAQuery, настроенный тип запроса в Play.

Но с соответствующими коллекциями, например:

Post.comments

просто вернет список, который не поддерживает пейджинг или другие запросы.

Мне было интересно, как его расширить, чтобы

Post.comments

также вернет объект JPAQuery или аналогичный, затем вы можете запросить в коллекции «query»:

Post.comments.from(100).fetch(10);

или вставьте новый комментарий, не выбирая ни одного комментария:

Post.comments.add(new Comment(...));

По моей первой мысли, мы могли бы создать подкласс List, тогда класс Post стал бы:

@Entity class Post {
    ...
    @OneToMany
    QueryList<Comment> comments;
    ...
}

и QueryList будет иметь методы fetch (), from (), которые являются косвенными для методов JPAQuery.

Но я не знаю, признает ли Hibernate / JPA это или мешает этому.

Ответы на вопрос(2)

Ваш ответ на вопрос