Wie kann ich mit @OneToMany-Sammlungen pagen?

Angenommen, ich habe eine Entität Post und eine Entität Comment und eine Eins-zu-Viele-Beziehung:

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

Wie kann ich ein Paging wie folgt erreichen:

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

Ist es möglich, dynamisches Paging mit @OneToMany-Sammlungen über JPA zu emulieren, oder müssen wir den Zuordnungsmechanismus von JPA komplett neu schreiben? (Erstellen Sie beispielsweise einen PersistentList-Auflistungstyp, mit dem das Blättern, Sortieren und Suchen verwaltet werden kann.)

P.S .: Ich habe vor kurzem das Spiel gefunden! Framework verwendet eine sehr interessante Bibliothek über JPA: Siena. Siena ist sehr einfach zu bedienen und eine gute Abstraktion über JPA / Hibernate. Aber ich kann nicht herausfinden, wie man mit seinen Assoziationen Paging macht.

Aktualisieren

Play Framework hat eine ähnliche Abfragesyntax wie Django:

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

w

Post.findAll() 

gibt ein JPAQuery-Objekt zurück, einen benutzerdefinierten Abfragetyp in Play.

Aber mit zugehörigen Sammlungen,

Post.comments

gibt nur eine Liste zurück, die Paging oder andere Abfragen nicht unterstützt.

Ich habe mich gefragt, wie ich es erweitern soll, damit

Post.comments

wird auch ein JPAQuery-Objekt oder ähnliches zurückgeben, dann können Sie eine Abfrage für die Auflistung "query" durchführen:

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

oder fügen Sie einen neuen Kommentar ein, ohne einen der Kommentare abzurufen:

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

Nach meinem ersten Gedanken könnten wir eine Unterklasse von List erstellen, dann würde die Post-Klasse:

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

und QueryList haben fetch (), from () -Methoden, die indirekt zu JPAQuery's führen.

Aber ich weiß nicht, ob Hibernate / JPA dies erkennt oder stört.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage