1

マッピングされたQuestionオブジェクトを持つオブジェクトがありますList。オブジェクトには、特定の質問に対するコメントをフェッチするメソッドがあります。Comment@OneToManyQuestionfetchComments(int offset, int pageSize)

一度に限られた量のコメントを取得して、コメントをページ付けしたいと思います。

オブジェクトを作成する場合、およびQueryでフェッチするレコードオフセットと最大レコードを設定できます。しかし、私の質問は、(可能であれば)単純な注釈やプロパティを使用してieを記述しなくても、同じ結果をどのように達成できるかということです。もっと明確に、私は何かのようなものがあるかどうかを知る必要がありますQuery.setFirstResult(int offset)Query.setMaxResults(int numberOfResults)Query

@OneToMany(cascade = CascadeType.ALL)
@Paginate(offset = x,maxresult = y)//is this kind of annotation available?
private List<Comment> comments;

@Basic(fetch = FetchType.LAZY)実行時に必要なレコードのみをロードすることを読みましたが、そこでフェッチされるレコードの数を制御することはできません。私はJPAを初めて使用します。それで、私が本当に単純な何かを逃したかどうか考えてください。

4

1 に答える 1

3

いいえ、JPAにはそのような機能はありません。また、概念自体は少し混乱しています。あなたの例では、オフセット(およびmaxresultも)はコンパイル時定数であり、ページネーションの目的にはあまり役立ちません。また、一般に、エンティティのJPAアノテーションは、コンテキストに依存する結果ではなく、構造を定義します(その必要性のためにクエリがあります)。

リストでアクセスされたときにエンティティをフェッチするだけで十分であり、Hibernateを使用している場合、取得できる最も近いものは追加の@LazyCollectionです。

@org.hibernate.annotations.LazyCollection(LazyCollectionOption.EXTRA)
于 2012-07-15T18:16:28.990 に答える